single.php

CFileFindでファイル一覧を取得

CLRでVBやC#だと、System.IO.Directoryクラスで簡単にできてしまうことがC++では一苦労(まぁ仕方の無いことですが…)大昔に作った記憶からソースコードを掘り当てて、同じことをする処理を備忘録。(我ながら、昔は大変だったのが思い出されました…)

CFileFind ff;//クラス作成
//現在のカレントパスをコピーするバッファ
char tmpCurrentDir[MAX_PATH];
//現在のカレントパスをコピー
GetCurrentDirectory(sizeof(tmpCurrentDir),tmpCurrentDir);
//カレントパスを対象に移動させないとFindFile関数が動作しません
SetCurrentDirectory(sTempPath);
//フォルダ検索(ワイルドカードを使ってビットマップファイルを探しています)
BOOL bFinding = ff.FindFile("*.bmp");
while(bFinding)
{
  //次のファイル
  bFinding = ff.FindNextFile();
  //ファイル名の取得
  std::string fileName = ff.GetFileName();
}
//カレントを戻す
SetCurrentDirectory(tmpCurrentDir);

カレントパスをバッファに保存して処理後に元に戻すとか、GDI時代のデバイスコンテキストとかを思い出しました。(C++の開発していると、どこかしら古臭さが出てきます)

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です