【问题标题】:Searching for directories only仅搜索目录
【发布时间】:2012-09-08 14:06:19
【问题描述】:
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 选项被显式传递给函数,为什么它还输出“常规”文件?

【问题讨论】:

    标签: c winapi windows-7


    【解决方案1】:

    How to recursively traverse directories in C on Windows

    • 注意:由于该标志是在 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;
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2014-11-27
      • 1970-01-01
      • 2012-04-03
      • 2014-10-07
      • 2016-05-26
      • 2015-04-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多