如何获取此文件夹中的文件夹列表?

Som*_*ser 7 c++ winapi visual-c++

如何获取此文件夹中的文件夹列表?

eph*_*ent 10

FindFirstFileEx + FindExSearchLimitToDirectories.

WIN32_FIND_DATA fi;
HANDLE h = FindFirstFileEx(
        dir,
        FindExInfoStandard,
        &fi,
        FindExSearchLimitToDirectories,
        NULL,
        0);
if (h != INVALID_HANDLE_VALUE) {
    do {
        if (fi.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY) 
            printf("%s\n", fi.cFileName);
    } while (FindNextFile(h, &fi));
    FindClose(h);
}
Run Code Online (Sandbox Code Playgroud)

  • FindExSearchLimitToDirectories实际上不是一个可靠的解决方案.这只是一个咨询标志.例如,在我的带有NTFS的Windows XP Pro SP3系统上,它没有任何效果.请参阅:http://stackoverflow.com/questions/2248911/file-system-support-for-findfirstfileex-limit-to-directories (2认同)
  • `我希望有人会在使用此代码之前按照链接阅读文档.不合理的期望?"是的,是的.如果他们想阅读文档和内容,那么为什么还要问这里呢?直接询问的要点是直接回答答案,而不是花一整天时间进行搜索和阅读. (2认同)

Joh*_*don 8

如果你不能使用.NET和托管代码,你可以通过win32 api

下面是一个示例,您可以修改为仅获取文件夹.

(基本上是以下检查:)

...
  TCHAR szDir = _T("c:\\"); // or wherever.
  HANDLE hFind = FindFirstFile(szDir, &ffd);
...
  do {
      if (ffd.dwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)
      {
         // your code on 'ffd'
      }
  } while (FindNextFile(hFind, &ffd) != 0);
Run Code Online (Sandbox Code Playgroud)