フォルダの中のファイルを列挙する【Windows API】

FindFirstFileやFindNextFileといった関数を使用するとファイルを列挙することができます。 特定のフォルダの中のファイルに特定の加工を施したりする場合に使用します。 ここでは再帰処理が無い場合について説明します。つまり、フォルダの中にあるファイルについて は列挙しません。

void ShowFileList()
{
    char szPath[MAX_PATH+1];
    WIN32_FIND_DATA lp;

    lstrcpy(szPath, "C:\\*");

    HANDLE hFind = FindFirstFile(szPath, &lp);

    do {      
        if (lstrcmp(lp.cFileName, "..") != 0 && 
            lstrcmpi(lp.cFileName, ".") != 0) {

            if (lp.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) {            
                // ディレクトリの場合
                printf("[DIR]  %s\n", lp.cFileName);
            } else {
                // ファイルの場合
                printf("[FILE] %s\n", lp.cFileName);
            }

        }

    } while(FindNextFile(hFind,&lp));

    FindClose(hFind);
    return;
}

 

Windows API

Posted by @erestage