Библиотека файловой системы
Библиотека файловой системы предоставляет средства для выполнения операций с файловыми системами и их компонентами, такими как пути, обычные файлы и каталоги.
Изначально данная библиотека разрабатывалась как boost.filesystem, была опубликована как техническая спецификация ISO/IEC TS 18822:2015, и, наконец, объединена с ISO C++ начиная с C++17. Реализация boost в настоящее время доступна на большем количестве компиляторов и платформ, чем библиотека C++17.
Средства библиотеки файловой системы могут быть недоступны, если иерархическая файловая система недоступна для реализации или если она не предоставляет необходимые возможности. Некоторые функции могут быть недоступны, если они не поддерживаются базовой файловой системой (например, в файловой системе FAT отсутствуют символические ссылки и запрещены множественные жёсткие ссылки). В таких случаях необходимо сообщать об ошибках.
Поведение будет не определено, если вызовы функций этой библиотеки вызывают гонку файловой системы, то есть когда несколько потоков, процессов или компьютеров чередуют доступ и модификацию одного и того же объекта в файловой системе.
Содержание |
[править] Определения для всей библиотеки
- файл: объект файловой системы, со��ержащий данные, который можно записывать, читать или и то, и другое. Файлы имеют имена, атрибуты, одним из которых является тип файла:
- каталог: файл, который действует как контейнер записей каталога, которые идентифицируют другие файлы (некоторые из которых могут быть другими, вложенными каталогами). При обсуждении конкретного файла каталог, в котором он появляется как запись, является его родительским каталогом. Родительский каталог может быть представлен относительным путём "..".
- обычный файл: запись в каталоге, которая связывает имя с существующим файлом (т. е. жёсткая ссылка). Если поддерживается несколько жёстких ссылок, файл удаляется после удаления последней жёсткой ссылки на него.
- символическая ссылка: запись каталога, которая связывает имя с путём, который может существовать, а может и не существовать.
- другие специальные типы файлов: блочный, символьный, fifo, сокет.
- имя файла: строка символов, которая именует файл. Допустимые символы, чувствительность к регистру, максимальная длина и запрещённые имена определяются реализацией. Имена "." (точка) и ".." (двоеточие) имеют особое значение на уровне библиотеки.
- путь: последовательность элементов, идентифицирующая файл. Он начинается с необязательного корневого имени (например, "C:" или "//server" в Windows), за которым следует необязательная корневая директория (например, "/" в Unix), за которым следует последовательность из нуля или более имён файлов (все, кроме последнего, должны быть каталогами или ссылками на каталоги). Собственный формат (например, какие символы используются в качестве разделителей) и кодировка символов строкового представления пути (путь) определяется реализацией, эта библиотека обеспечивает переносимое представление путей.
- абсолютный путь: путь, который однозначно определяет расположение файла.
- канонический путь: абсолютный путь, не содержащий символических ссылок, элементов "." или "..".
- относительный путь: путь, определяющий расположение файла относительно некоторого места в файловой системе. Специальные имена путей "." (точка, "текущий каталог") и ".." (двоеточие, "родительский каталог") являются относительными путями.
Классы | |
Определены в заголовочном файле
<filesystem> | |
Определены в пространстве имён
std::filesystem | |
(C++17) |
представляет собой путь (класс) |
(C++17) |
исключение, вызванное ошибками файловой системы (класс) |
(C++17) |
запись каталога (класс) |
(C++17) |
итератор содержимого каталога (класс) |
(C++17) |
итератор содержимого каталога и его подкаталогов (класс) |
(C++17) |
представляет тип и разрешения файла (класс) |
(C++17) |
информация о свободном и доступном пространстве в файловой системе (класс) |
(C++17) |
тип файла (перечисление) |
(C++17) |
определяет разрешения файловой системы (перечисление) |
(C++17) |
определяет семантику операций с разрешениями (перечисление) |
(C++17) |
определяет семантику операций копирования (перечисление) |
(C++17) |
опции для итерации содержимого каталога (перечисление) |
(C++17) |
представляет значения времени файла (определение типа) |
Функции, не являющиеся элементами | |
Определены в заголовочном файле
<filesystem> | |
Определены в пространстве имён
std::filesystem | |
(C++17) |
составляет абсолютный путь (функция) |
(C++17) |
составляет канонический путь (функция) |
(C++17) |
составляет относительный путь (функция) |
(C++17) |
копирует файлы или каталоги (функция) |
(C++17) |
копирует содержимое файла (функция) |
(C++17) |
копирует символическую ссылку (функция) |
(C++17)(C++17) |
создаёт новый каталог (функция) |
(C++17) |
создаёт жесткую ссылку (функция) |
(C++17)(C++17) |
создаёт символическую ссылку (функция) |
(C++17) |
возвращает или устанавливает текущий рабочий каталог (функция) |
(C++17) |
проверяет, ссылается ли путь на существующий объект файловой системы (функция) |
(C++17) |
проверяет, ссылаются ли два пути на один и тот же объект файловой системы (функция) |
(C++17) |
возвращает размер файла (функция) |
(C++17) |
возвращает число жёстких ссылок, ссылающихся на конкретный файл (функция) |
(C++17) |
получает или задаёт время последней модификации данных (функция) |
(C++17) |
изменяет права доступа к файлу (функция) |
(C++17) |
получает цель символической ссылки (функция) |
(C++17)(C++17) |
удаляет файл или пустой каталог удаляет файл или каталог и всё его содержимое рекурсивно (функция) |
(C++17) |
перемещает или переименовывает файл или каталог (функция) |
(C++17) |
изменяет размер обычного файла путём усечения или заполнением нулями (функция) |
(C++17) |
определяет доступное свободное место в файловой системе (функция) |
(C++17)(C++17) |
определяет атрибуты файла определяет атрибуты файла, проверяя цель символической ссылки (функция) |
(C++17) |
возвращает каталог, подходящий для временных файлов (функция) |
Типы файлов | |
(C++17) |
проверяет, ссылается ли данный путь на блочное устройство (функция) |
(C++17) |
проверяет, ссылается ли данный путь на символьное устройство (функция) |
(C++17) |
проверяет, ссылается ли данный путь на каталог (функция) |
(C++17) |
проверяет, ссылается ли данный путь на пустой файл или каталог (функция) |
(C++17) |
проверяет, ссылается ли данный путь на именованный канал (функция) |
(C++17) |
проверяет, ссылается ли аргумент на другой файл (функция) |
(C++17) |
проверяет, ссылается ли аргумент на обычный файл (функция) |
(C++17) |
проверяет, ссылается ли аргумент на именованный IPC-сокет (функция) |
(C++17) |
проверяет, ссылается ли аргумент на символическую ссылку (функция) |
(C++17) |
проверяет, известно ли состояние файла (функция) |
[править] Примечание
Для использования этой библиотеки могут потребоваться дополнительные параметры компилятора/компоновщика. Реализация GNU до 9.1 требует связывания с -lstdc++fs, а реализация LLVM до LLVM 9.0 требует связывания с -lc++fs.
Макрос Тестирования функциональности | Значение | Стандарт | Функциональность |
---|---|---|---|
__cpp_lib_filesystem |
201703L | (C++17) | Библиотека файловой системы |
[править] Смотрите также
Документация C++ по Файловая Система ТС
|