#c #file #directory
#c #файл #каталог
Вопрос:
Может кто-нибудь сказать мне, есть ли библиотека, встроенная в C , которую я могу использовать для получения списка файлов и каталогов? Я огляделся и вижу, что люди используют dirent.h, но мне нужно его загрузить (я думаю).
Спасибо
PS Я просмотрел fstream, но, насколько я знаю, это только для чтения и вывода файлов.
ЗАБЫЛ УПОМЯНУТЬ. Я НЕ ХОЧУ НИЧЕГО ЗАГРУЖАТЬ, Я ПРОСТО ХОЧУ ПОСМОТРЕТЬ, ЕСТЬ ЛИ БИБЛИОТЕКА, ВСТРОЕННАЯ В C , КОТОРУЮ Я МОГУ ИСПОЛЬЗОВАТЬ СРАЗУ. ЭТО ТАКЖЕ ДЛЯ WINDOWS
Комментарии:
1. Какую платформу вы используете? Сам C не зависит от платформы, поэтому вы должны предоставить эту информацию.
Ответ №1:
Как насчет Boost::Filesystem? Поддерживает итерацию каталогов и является переносимым.
Ответ №2:
Вы можете использовать Boost Filesystem
библиотеку.
http://www.boost.org/doc/libs/1_31_0/libs/filesystem/doc/index.htm
Некоторые хорошие примеры также представлены по ссылке.
Редактировать:
Без загрузки сторонней библиотеки нет переносимого способа сделать это. Для Windows вы можете использовать класс CFileFind из MFC.
Комментарии:
1. должен ли я загружать эту библиотеку? чтобы использовать его? говорит, что не удается найти файл … с помощью VS2008
2. Да, вам действительно нужно скачать boost.
3. @Danny Я обновил свой ответ, это должно работать без каких-либо дополнительных загрузок.
Ответ №3:
Поскольку другие уже упоминали boost::filesystem, существуют и другие альтернативы. Почти в каждом фреймворке C есть какой-то способ перечисления каталогов и файлов. Например, wxWidgets или poco, и есть еще много других.
Что касается dirent.h
. Это стандартная библиотека C Posix, поэтому в системах, совместимых с Posix, она должна быть доступна. Для Windows вы также можете получить его здесь, и он включает инструкции по его использованию.
После вашего редактирования:
В Windows вы можете использовать такие вещи, как FindFirstFile (пример здесь), и тогда вам не нужно ничего загружать. Но это работает только в Windows. Он не встроен в C .
Ответ №4:
Использование пространства имен std::filesystem доступно в visual studio 2017, которое у вас есть в #include
#include <iostream>
#include <iostream>
#include <fstream>
#include <filesystem>
#include <chrono>
#include <thread>
#include <functional>
namespace fs = std::filesystem;
void Files_in_Directory();
fs::path path_Copy_Directory = "E:Folder";
fs::path path_Paste_Directory = "E:Folder1";
int main()
{
Files_in_Directory()
return 0;
}
void Files_in_Directory()
{
for (const auto amp; entry : fs::directory_iterator(path_Copy_Directory))
{
std::cout << entry.path() << std::endl;
}
}