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());
        }
    }
}