|
这个递归是否在这有错误
void EnumFiles_3(LPCTSTR lpszParentPath, LPCTSTR lpFileType)
{
if (!lpszParentPath || _tcslen(lpszParentPath) <= 0 || !lpFileType || _tcslen(lpFileType) <= 0) return;
TCHAR szFilePath[MAX_PATH] = { 0 };
_stprintf(szFilePath, _T("%s%s"), lpszParentPath, lpFileType);
fstream fs;
fs.open("./file.txt");
if (!fs) return;
WIN32_FIND_DATA stFindFileData = { 0 };
HANDLE hFind = FindFirstFile(szFilePath, &stFindFileData);
if (hFind != INVALID_HANDLE_VALUE)
{
BOOL bFind = FALSE;
do
{
bFind = FindNextFile(hFind, &stFindFileData);
if (!bFind) break;
string strInfo;
if (stFindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if (_tcscmp(stFindFileData.cFileName, _T(".")) == 0 || _tcscmp(stFindFileData.cFileName, _T("..")) == 0) continue;
strInfo += "Folder Name:\t";
strInfo += unicode2gbk(stFindFileData.cFileName);
strInfo += "\t------";
if (stFindFileData.dwFileAttributes & FILE_ATTRIBUTE_READONLY) strInfo += "r";
if (stFindFileData.dwFileAttributes & FILE_ATTRIBUTE_SYSTEM) strInfo += "s";
if (stFindFileData.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN) strInfo += "h";
strInfo += "\n";
TCHAR szPath[MAX_PATH] = {0};
_stprintf(szPath, _T("%s%s"), szPath, stFindFileData.cFileName);
EnumFiles_3(szPath, lpFileType);
}
else
{
strInfo += "File Name:\t";
strInfo += unicode2gbk(stFindFileData.cFileName);
strInfo += "\t------";
if (stFindFileData.dwFileAttributes & FILE_ATTRIBUTE_READONLY) strInfo += "r";
if (stFindFileData.dwFileAttributes & FILE_ATTRIBUTE_SYSTEM) strInfo += "s";
if (stFindFileData.dwFileAttributes & FILE_ATTRIBUTE_HIDDEN) strInfo += "h";
strInfo += "\n";
}
if (strInfo.size() > 0) fs << strInfo.c_str();
} while (bFind);
}
fs.close();
FindClose(hFind);
}
就是在 _stprintf(szPath, _T("%s%s"), szPath, stFindFileData.cFileName);
觉得条件是_stprintf(szPath, _T("%s%s"), lpszParentPath, stFindFileData.cFileName); |
上一篇: 《C/C++ Windows 程序设计》下一篇: Winsock 编程
|