Filesystem library (since C++17)
Библиотека Filesystem предоставляет средства для выполнения операций с файловыми системами и их компонентами, такими как пути, обычные файлы и каталоги.
Библиотека файловой системы изначально была разработана как boost.filesystem , опубликована как техническая спецификация ISO/IEC TS 18822:2015 и окончательно включена в ISO C++ начиная с C++17. Реализация boost в настоящее время доступна на большем количестве компиляторов и платформ, чем библиотека C++17.
Возможности библиотеки filesystem могут быть недоступны, если иерархическая файловая система недоступна для реализации или если она не предоставляет необходимые возможности. Некоторые функции могут быть недоступны, если они не поддерживаются базовой файловой системой (например, файловая система FAT не поддерживает символические ссылки и запрещает множественные жесткие ссылки). В таких случаях должны сообщаться ошибки.
Поведение является неопределенным , если вызовы функций в этой библиотеке приводят к гонке файловой системы , то есть когда несколько потоков, процессов или компьютеров чередуют доступ и модификацию одного и того же объекта в файловой системе.
Содержание |
Общебиблиотечные определения
- файл : объект файловой системы, который хранит данные, может быть записан, прочитан или и то, и другое. Файлы имеют имена, атрибуты, одним из которых является тип файла:
-
- directory : файл, который выступает в роли контейнера для записей каталога, идентифицирующих другие файлы (некоторые из которых могут быть другими, вложенными каталогами). При обсуждении конкретного файла, каталог, в котором он представлен как запись, является его parent directory . Родительский каталог может быть представлен относительным путем ".." .
- regular file : запись каталога, которая связывает имя с существующим файлом (т.е. hard link ). Если поддерживаются множественные жесткие ссылки, файл удаляется после удаления последней жесткой ссылки на него.
- symbolic link : запись каталога, которая связывает имя с путем, который может существовать или не существовать.
- другие специальные типы файлов: block , character , fifo , socket .
- имя файла : строка символов, которая именует файл. Допустимые символы, чувствительность к регистру, максимальная длина и запрещённые имена определяются реализацией. Имена "." (точка) и ".." (точка-точка) имеют специальное значение на уровне библиотеки.
- путь : последовательность элементов, идентифицирующих файл. Начинается с опционального root-name (например, "C:" или "//server" в Windows), за которым следует опциональный root-directory (например, "/" в Unix), за которым следует последовательность из нуля или более имён файлов (все, кроме последнего, должны быть директориями или ссылками на директории). Нативный формат (например, какие символы используются как разделители) и кодировка символов строкового представления пути ( pathname ) определяются реализацией, эта библиотека предоставляет портируемое представление путей.
-
- absolute path : путь, который однозначно определяет местоположение файла.
- canonical path : абсолютный путь, который не содержит символьных ссылок, "." или ".." элементов.
- relative path : путь, который определяет местоположение файла относительно некоторого местоположения в файловой системе. Специальные имена путей "." (точка, "текущий каталог") и ".." (две точки, "родительский каталог") являются относительными путями.
Классы |
|
|
Определено в заголовочном файле
<filesystem>
|
|
|
Определено в пространстве имён
std::filesystem
|
|
|
(C++17)
|
представляет путь
(класс) |
|
(C++17)
|
исключение, выбрасываемое при ошибках файловой системы
(класс) |
|
(C++17)
|
запись каталога
(класс) |
|
(C++17)
|
итератор содержимого директории
(класс) |
|
(C++17)
|
итератор для содержимого директории и её поддиректорий
(класс) |
|
(C++17)
|
представляет тип файла и права доступа
(класс) |
|
(C++17)
|
информация о свободном и доступном пространстве в файловой системе
(класс) |
|
(C++17)
|
тип файла
(перечисление) |
|
(C++17)
|
определяет права доступа файловой системы
(enum) |
|
(C++17)
|
определяет семантику операций с разрешениями
(enum) |
|
(C++17)
|
определяет семантику операций копирования
(enum) |
|
(C++17)
|
параметры для итерации содержимого директории
(перечисление) |
|
(C++17)
|
представляет значения времени файла
(typedef) |
Функции, не являющиеся членами класса |
|
|
Определено в заголовочном файле
<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 до версии 9.0 требует линковки с
-lc++fs
.
| Макрос тестирования возможностей | Значение | Стандарт | Функция |
|---|---|---|---|
__cpp_lib_filesystem
|
201703L
|
(C++17) | Библиотека файловой системы |
Смотрите также
|
C++ documentation
для
File System TS
|