Пространства имён
Варианты
Действия

Библиотека файловой системы

Материал из cppreference.com
< cpp
 
 
 

Библиотека файловой системы предоставляет средства для выполнения операций с файловыми системами и их компонентами, такими как пути, обычные файлы и каталоги.

Изначально данная библиотека разрабатывалась как 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)
определяет разрешения файловой системы
(перечисление) [править]
определяет семантику операций с разрешениями
(перечисление) [править]
определяет семантику операций копирования
(перечисление) [править]
опции для итерации содержимого каталога
(перечисление) [править]
представляет значения времени файла
(определение типа) [править]

Функции, не являющиеся элементами

Определены в заголовочном файле <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)
проверяет, ссылается ли аргумент на именованный IPC-сокет
(функция) [править]
проверяет, ссылается ли аргумент на символическую ссылку
(функция) [править]
проверяет, известно ли состояние файла
(функция) [править]

[править] Примечание

Для использования этой библиотеки могут потребоваться дополнительные параметры компилятора/компоновщика. Реализация GNU до 9.1 требует связывания с -lstdc++fs, а реализация LLVM до LLVM 9.0 требует связывания с -lc++fs.

Макрос Тестирования функциональности Значение Стандарт Функциональность
__cpp_lib_filesystem 201703L (C++17) Библиотека файловой системы

[править] Смотрите также

Документация C++ по Файловая Система ТС