В Windows вы можете использовать _findfirst () и _findnext () для перебора содержимого каталога, а затем использовать CreateFile () и GetFileInformationByHandle (), чтобы определить, является ли конкретная запись каталогом или папкой. (Да, CreateFile () с соответствующими аргументами для проверки существующего файла. Разве жизнь не велика?)
Для справки, некоторые классы, в которых я реализовал код, использующий эти вызовы, можно увидеть здесь и здесь