仅搜索目录

时间:2012-09-08 14:06:20

标签: c winapi windows-7

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

1 个答案:

答案 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;
}