C поиск каталогов и файлов

#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;
			
	}
	
}