Как я могу перечислить все файлы в каталоге в POSIX / c c ++? - PullRequest
3 голосов
/ 08 марта 2011

Мне нужно перечислить все файлы в директории, а затем перейти к субдиректории и сделать то же самое.

В идеале алгоритм должен работать точно так же на linux macos [windows (устаревшие) не более].

ОБНОВЛЕНИЕ: теперь я знаю о VFS, но я озадачен, чтобы использовать VFS для перечисления dir.Любое предложение ?Должен ли я открыть каталог как файл?

Ответы [ 4 ]

4 голосов
/ 08 марта 2011

POSIX.1-2001 указывает opendir, readdir и closedir, seekdir, rewinddir и telldir.Скорее всего, на вашей платформе есть справочные страницы, описывающие, как их использовать.

Они, как сообщается, не поддерживаются непосредственно библиотеками MS, вместо этого они явно предпочитают использовать FindFirst и FindNext, но есть несколько библиотек эмуляции,предоставить вышеизложенное;вам придется отсортировать эту часть по своему усмотрению, так как я не очень знаком с Win32.

3 голосов
/ 08 марта 2011

Вы можете использовать Boost Filesystem , которая переносима на Linux, Windows и MacOS. recursive_directory_iterator позволит вам, как следует из названия, рекурсивно выполнять итерацию по каталогу.

#include "boost/filesystem.hpp"
#include <iostream>

int main()
{
    namespace fs = boost::filesystem;
    fs::recursive_directory_iterator end;
    for ( fs::recursive_directory_iterator dir("./"); dir != end; ++dir )
    {
       std::cout << *dir << std::endl;
    }
}
3 голосов
/ 08 марта 2011

Если вы используете GCC, вы можете попробовать интерфейс файловой системы.Проверьте здесь: Ссылка на интерфейс файловой системы GNU

1 голос
/ 08 марта 2011

Вы должны использовать getdents () или readdir () в Linux

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...