[kaze's test] プログラミングメモ →目次

ォルダのトラベル

Travel in a folder

フォルダの中にあるファイルとサブフォルダにあるファイルを取得する方法のメモです。CFileFindを使います。


void TravelFolder(CString strDir, int nDepth)
{
    CFileFind filefind;                                         //
    CString strWildpath = strDir + _T("\\*.*");     //すべてのファイル
    if(filefind.FindFile(strWildpath, 0))	                   //検索開始
    {
        BOOL bRet = TRUE;
        while(bRet)
        {
            bRet = filefind.FindNextFile();                 //一番目のファイル
            if(filefind.IsDots())                                 //. 或いは ..の場合、次へ
                continue;
            for (int i = 0; i < nDepth; i ++)                 //階層を作る為に、スペースを印刷
            {
                TRACE(_T("    "));
            }
            if(!filefind.IsDirectory())                          //サブフォルダでなければ、ファイル名を印刷
            {
                CString strTextOut = strDir + CString(_T("\\")) + filefind.GetFileName();
                TRACE(_T("file = %s\r\n"), strTextOut);
            }
            else                                                    //サブフォルダのばあは、再帰する
            {
                CString strTextOut = strDir + CString(_T("\\")) + filefind.GetFileName();
                TRACE(_T("dir = %s\r\n"), strTextOut);
                TravelFolder(strTextOut, nDepth + 1);            }
        }
        filefind.Close();
    }
}
//テスト
void Test()
{
    TravelFolder(CString(_T("d:\\temp")), 0);
}