int main(void)
{
HANDLE hFoundFile;
WIN32_FIND_DATA foundFileData;
SetCurrentDirectory(TEXT("C:\\"));
hFoundFile = FindFirstFileEx(TEXT("*"),FINDEX_INFO_LEVELS::FindExInfoBasic,&foundFileData ,FINDEX_SEARCH_OPS::FindExSearchLimitToDirectories ,NULL , NULL);
do
{
wprintf(TEXT("%s\n"),foundFileData.cFileName);
}
while(FindNextFile(hFoundFile,&foundFileData));
system("Pause");
return 0;
}
为什么它也输出“常规”文件,虽然FINDEX_SEARCH_OPS::FindExSearchLimitToDirectories
选项显式传递给函数?
答案 0 :(得分:1)
How to recursively traverse directories in C on Windows
注意:由于该标志是在2001年添加的,因此该点之前的任何系统(例如Windows 2000,基于旧版Samba构建的NAS设备)都不支持该标志。 - Raymond Chen
WIN32_FIND_DATA FindFileData;
do {
if (FindFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
}
while(FindNextFile(hFindFile, &FindFileData));
并在您的代码中:
int main(void)
{
HANDLE hFoundFile;
WIN32_FIND_DATA foundFileData;
SetCurrentDirectory(TEXT("C:\\"));
hFoundFile = FindFirstFileEx(TEXT("*"),FINDEX_INFO_LEVELS::FindExInfoBasic,&foundFileData ,FINDEX_SEARCH_OPS::FindExSearchLimitToDirectories ,NULL , NULL);
do
{
if (foundFileData.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
wprintf(TEXT("%s\n"),foundFileData.cFileName);
}
while(FindNextFile(hFoundFile,&foundFileData));
system("Pause");
return 0;
}