利用windows提供的API函数FindFirstFile()和FindNextFile()就可以很轻松的遍历指定目录文件。
相关实现代码如下:
int FindAllFiles(const CString &strFolderPath)
{
int iRet = 0;
TCHAR szFolderPath[MAX_PATH] = {0};
TCHAR szFolderRoot[MAX_PATH] = {0};
WIN32_FIND_DATA findFileData;
_tcscpy(szFolderPath,strFolderPath);
_tcscpy(szFolderRoot,strFolderPath);
_tcscat(szFolderPath,_T("\\*.*"));
HANDLE hFind = ::FindFirstFile(szFolderPath,&findFileData);
if (INVALID_HANDLE_VALUE == hFind)
{
return -1;
}
do
{
if (findFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if( (_tcscmp(findFileData.cFileName,_T(".")) != 0 ) &&(_tcscmp(findFileData.cFileName,_T("..")) != 0))
{
TCHAR szFile[MAX_PATH] = {0};
PathCombine(szFile,szFolderRoot,findFileData.cFileName);
FindAllFiles(szFile);
}
}
else
{
CString strfile = strFolderPath + _T("\\") + findFileData.cFileName;
_tprintf(_T("%s\\%s \r\n"),strFolderPath,findFileData.cFileName);
}
} while (::FindNextFile(hFind,&findFileData));
FindClose(hFind);
return iRet;
}