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