Пожалуйста, смотрите редактирование с советами, взятым до сих пор ...
Я пытаюсь перечислить все каталоги (папки) в данном каталоге с использованием WinAPI & C ++.
Прямо сейчас мой алгоритм медленный и неэффективный:
- Используйте findfirstfileex (), чтобы открыть папку, которую я ищу
- Затем я смотрю на каждый файл в каталоге (используя findnextFile ()); Если его файл каталога, я храним свой абсолютный путь в векторе, если его просто файл, я ничего не делаю.
Это кажется чрезвычайно неэффективным, потому что я смотрю на каждый файл в каталоге.
Править: Поэтому после принятия совета я искал использовать 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 );
}