递归文件检索

利用Win32的FindFirstFile和FindNextFile函数,外加递归就可以实现深入子文件夹的文件检索了

void CFileSearch_MFCDlg::FindFile(LPCTSTR filePath)
{
WIN32_FIND_DATA lpFindFileData;
char t_filePath[MAX_FILENAMELEN],t_searchFile[MAX_FILENAMELEN],t_findFile[MAX_FILENAMELEN];
HANDLE t_hFile;

strcpy(t_filePath,filePath);
strcat(t_filePath,"\\");
strcpy(t_searchFile,t_filePath);
strcat(t_searchFile,"*.*");
t_hFile=FindFirstFile(t_searchFile,&lpFindFileData);
if (t_hFile!=INVALID_HANDLE_VALUE)
{
   do
   {
    strcpy(t_findFile,t_filePath);
    strcat(t_findFile,lpFindFileData.cFileName);
    if (lpFindFileData.dwFileAttributes==FILE_ATTRIBUTE_DIRECTORY)
    {
     //文件夹则递归
     if (lpFindFileData.cFileName[0]!=46)//?
     {
      m_folderCount++;
      FindFile(t_findFile);
     }
    }
    else
     //文件
     ProcessFile(t_findFile);//针对单个文件的操作函数
   } while (FindNextFile(t_hFile,&lpFindFileData)&&m_flagSearch);
   CloseHandle(t_hFile);
}
}

posted @ 2008-10-22 19:20  freezym  阅读(193)  评论(0编辑  收藏  举报