Получение списка файлов в папке с использованием C
Вопрос
У меня есть путь к папке, например
/моя папка
или в окнах:
C: myfolder
И я хочу получить список всех файлов в этой папке. Как я должен сделать это в C?
Различается ли это в C ++ или C99?
Как я могу получить список его папок?
Любая помощь ценится.
Решение
В операционных системах POSIX вы можете назвать opendir () и readdir (). В Windows вы можете вызвать _findFirst () и _findnext (). С небольшим усилием вы можете реализовать свой собственный OPENDIR () и READDIR () как функции обертки под Windows, чтобы ваш код приложения может использовать ту же API везде. Пример этого можно найти здесь.
Другие советы
Вы можете использовать функции, объявленные в укрывать
Direent.h - заголовок в библиотеке C PSIX для языка программирования C, который содержит конструкции, которые облегчают прохождение каталогов. Функция не является частью стандартов C, но считается «псевдо-стандартным» и обычно портативна между платформами.
http://en.wikipedia.org/wiki/Dirent.h.
#include <dirent.h>
int main(int argc, char **argv)
{
DIR *dir;
struct dirent *de;
dir = opendir("."); /*your directory*/
while(dir)
{
de = readdir(dir);
if (!de) break;
printf("%i %s\n", de->d_type, de->d_name);
}
closedir(dir);
return 0;
}
Лучший подход в C ++ использует Boost Filesystem.
Что касается C, вам потребуется API платформы (POSIX / WinAPI).
POSIX Документация + Пример: http://www.opengroup.org/onlinepubs/009695399/functions/readdir.html.
Проверьте get_all_files_within_folder()
Я написал в C / C ++ здесь, который я ответил на подобный вопрос как ваш. Это отлично работает для меня. Надеюсь, поможет.
Это классическая задача, одновестный раствор может найти в Kernigan & Ritchie - язык программирования C (глава 8.6). Сущность задачи - рекурсивная траверс целевой папки и его подпапки.