CFileFindクラスによるファイル検索
[POINT]:サプ・ディレクトリの検索のためにリカーシブル・コールを使用しています。
ファイル検索の定番ロジックですので、知っておくと便利です。
【サンプル・ソース】
void CFfindsapDlg::OnButton1()
{
CString strBuf;
//検索開始ディレクトリの取得
m_edit1.GetWindowText(strBuf);
//検索開始
SearchFile(_T("*.*"), strBuf);
}
//--------------------------------------------------------
// ファイルを指定ディレクトリ内から検索します
//【引数】FName:ファイル名、FDir:検索ディレクトリ
//--------------------------------------------------------
void CFfindsapDlg::SearchFile(CString FName, CString FDir)
{
CFileFind FileFind;
BOOL FndEndJug;
//-----------------------------
//検索ファイル名文字列を生成
CString strSearchFile = FDir + _T("\\") + FName;
//----------------
//検索実行
if(!FileFind.FindFile(strSearchFile))
return;
FndEndJug = TRUE;
while(FndEndJug){
//-------
//検索
FndEndJug = FileFind.FindNextFile();
// "." , ".."を無視
if(FileFind.IsDots())
continue;
//検索結果の判定
if(FileFind.IsDirectory())
{
// サブ・ディレクトリ内を検索するための再帰呼び出し
SearchFile(FName, FileFind.GetFilePath());
}
else {
// 検索結果をリスト・ボックスへ出力
m_list1.AddString(FileFind.GetFilePath());
}
}
}