[MFC]ファイル探索を行う方法

MFCでファイル探索を行う場合にはCFileFindクラスを使います。

この記事では、MFCでファイル探索を行う方法について解説を行います。

ファイル探索

ファイル探索を行う際にはCFileFindクラスを使います。

CFileFindクラスのインスタンスに対して、FindFile関数で探索を行うディレクトリ等の指定を行い、FindNextFile関数で見つかったディレクトリやファイルを取得します。

MFC
// ファイル探索
void SearchFile(CString rootDir)
{
    // ファイル探索オブジェクト
    CFileFind find;
    // ファイル探索結果
    BOOL bFind = find.FindFile(rootDir + _T("¥¥*"));

    while(bFind)
    {
        bFind = find.FindNextFile();
        // .や..は無視
        if(!find.IsDots())
        {
            // 見つかったディレクトリまたはファイル名
            CString name = find.GetFileName();
            // 見つかったディレクトリまたはファイルのフルパス
            CString path = find.GetFilePath();
            // ディレクトリの場合
            if(find.IsDirectory())
            {
                // 見つかったディレクトリに対して再帰
                // (子階層に対して処理が不要であれば実施しない)
               SearchFile(path);
               // ここで見つかったディレクトリに対して処理
            }
            // ファイルの場合
            else
            {
                // ここで見つかったファイルに対して処理
            }
        }
    }
}

CFileFindでは自ディレクトリを表す「.」や親ディレクトリを表す「..」も取得できてしまうため、IsDots関数が真となる場合には無視します。

また、見つかったディレクトまたはファイル名を取得する場合にはGetFileName関数、フルパスを取得する場合にはGetFilePath関数を使いますが、関数名が似ているので間違えないように注意してください。

コメントを残す

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