算法是别处摘来,是个递归算法,自己改了下。
想自己写个非递归的,无奈水平臭。。
int ifold = 0;//文件夹数
int ifile = 0;//文件数
void find(WCHAR * lpPath)
{
WCHAR szFind[MAX_PATH];
WIN32_FIND_DATA FindFileData;
wcscpy(szFind,lpPath);
wcscat(szFind,_T("//*.*"));
HANDLE hFind=::FindFirstFile(szFind,&FindFileData);
if(INVALID_HANDLE_VALUE == hFind) return;
while(TRUE)
{
if(FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
{
if(FindFileData.cFileName[0]!='.')
{
ifold++;
wcscpy(szFind,lpPath);
wcscat(szFind,_T("//"));
wcscat(szFind,FindFileData.cFileName);
find(szFind);
}
}
else
{
ifile++;
}
if(!FindNextFile(hFind,&FindFileData)) break;
}
FindClose(hFind);
}
本文分享了一个递归实现的文件夹搜索算法,并表达了作者希望转换为非递归实现的想法。该递归算法使用Win32 API进行文件及子文件夹的遍历,统计文件夹与文件数量。
2021

被折叠的 条评论
为什么被折叠?



