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

时间:2010-02-10 19:52:47

标签: c++ winapi visual-c++

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

4 个答案:

答案 0 :(得分: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);
}

答案 1 :(得分:8)

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

Here is an example您可以修改为仅获取文件夹。

(基本上是以下检查:)

...
  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);

答案 2 :(得分:3)

您可以使用Boost

或者,如果你不想要Boost,你可以查看这个讨论替代选项的线程。 http://www.gamedev.net/community/forums/topic.asp?topic_id=523375

答案 3 :(得分:1)

为获得最佳便携性,请使用boost filesystem库。对于基于UNIX的系统,请使用opendir()/ readdir()和friends。