1
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选项被显式传递给函数?

4

1 回答 1

1

如何在 Windows 上递归遍历 C 中的目录

  • 注意:由于该标志是在 2001 年添加的,在此之前的任何系统(例如 Windows 2000,基于旧版 Samba 构建的 NAS 设备)都将不支持该标志。– 雷蒙德陈

    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;
}
于 2012-09-08T14:16:12.703 回答