Эффективно перечислите все подкаталоги в каталоге

Пожалуйста, смотрите редактирование с советами, взятым до сих пор ...

Я пытаюсь перечислить все каталоги (папки) в данном каталоге с использованием WinAPI & C ++.

Прямо сейчас мой алгоритм медленный и неэффективный:
- Используйте findfirstfileex (), чтобы открыть папку, которую я ищу
- Затем я смотрю на каждый файл в каталоге (используя findnextFile ()); Если его файл каталога, я храним свой абсолютный путь в векторе, если его просто файл, я ничего не делаю.

Это кажется чрезвычайно неэффективным, потому что я смотрю на каждый файл в каталоге.

  • Есть ли функция WinAPI, которую я могу использовать, которые я могу использовать, что скажет мне все подкаталоги в данном каталоге?
  • Вы знаете алгоритм, который я мог бы использовать для эффективного поиска и идентификации папок в каталоге (папку) ?

Править: Поэтому после принятия совета я искал использовать FindexSearchlimittoDodireteries, но для меня он все еще печатает все файлы (.txt и т. Д.), И не только папки. Я делаю что-то не так?

WIN32_FIND_DATA dirData;
HANDLE dir = FindFirstFileEx( "c:/users/soribo/desktop\\*", FindExInfoStandard, &dirData, 
                              FindExSearchLimitToDirectories, NULL, 0 );

while ( FindNextFile( dir, &dirData ) != 0 )
{
    printf( "FileName: %s\n", dirData.cFileName );
}
6
задан user593747 3 September 2011 в 07:49
поделиться