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

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

4 ответов


Если вы не можете использовать .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);

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

можно использовать Boost

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


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