递归文件检索
利用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);
}
}