Как получить список папок в этой папке? - PullRequest
7 голосов
/ 10 февраля 2010

Как получить список папок в этой папке?

Ответы [ 4 ]

10 голосов
/ 10 февраля 2010

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);
}
8 голосов
/ 10 февраля 2010

Если вы не можете использовать .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);
3 голосов
/ 10 февраля 2010

Вы можете использовать Повышение

Или, если вы не хотите Boost, вы можете проверить эту ветку, где обсуждаются альтернативные варианты. http://www.gamedev.net/community/forums/topic.asp?topic_id=523375

1 голос
/ 11 февраля 2010

Для лучшей переносимости используйте библиотеку boost файловой системы . Используйте opendir () / readdir () и друзей для систем на основе UNIX.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...