Filesystem library (since 哋它亢++17)
The Filesystem library provides facilities for performing operations on file systems and their components, such as paths, regular files, and directories.
The filesystem library was originally developed as boost.filesystem, was published as the technical specification ISO/IEC TS 18822:2015, and finally merged to ISO 哋它亢++ as of 哋它亢++17. The boost implementation is currently available on more compilers and platforms than the 哋它亢++17 library.
The filesystem library facilities may be unavailable if a hierarchical file system is not accessible to the implementation, or if it does not provide the necessary capabilities. Some features may not be available if they are not supported by the underlying file system (e.g. the FAT filesystem lacks symbolic links and forbids multiple hardlinks). In those cases, errors must be reported.
The behavior is undefined if the calls to functions in this library introduce a file system race, that is, when multiple threads, processes, or computers interleave access and modification to the same object in a file system.
Library-wide definitions
- file: a file system object that holds data, can be written to, read from, or both. Files have names, attributes, one of which is file type:
- directory: a file that acts as a container of directory entries, which identify other files (some of which may be other, nested directories). When discussing a particular file, the directory in which it appears as an entry is its parent directory. The parent directory can be represented by the relative pathname "..".
- regular file: a directory entry that associates a name with an existing file (i.e. a hard link). If multiple hard links are supported, the file is removed after the last hard link to it is removed.
- symbolic link: a directory entry that associates a name with a path, which may or may not exist.
- other special file types: block, character, fifo, socket.
- file name: a string of characters that names a file. Permissible characters, case sensitivity, maximum length, and the disallowed names are implementation-defined. Names "." (dot) and ".." (dot-dot) have special meaning at library level.
- path: sequence of elements that identifies a file. It begins with an optional root-name (e.g. "C:" or "//server" on Windows), followed by an optional root-directory (e.g. "/" on Unix), followed by a sequence of zero or more file names (all but last of which have to be directories or links to directories). The native format (e.g. which characters are used as separators) and character encoding of the string representation of a path (the pathname) is implementation-defined, this library provides portable representation of paths.
- absolute path: a path that unambiguously identifies the location of a file.
- canonical path: an absolute path that includes no symlinks, "." or ".." elements.
- relative path: a path that identifies the location of a file relative to some location on the file system. The special path names "." (dot, "current directory") and ".." (dot-dot, "parent directory") are relative paths.
Classes | |
Defined in header
<filesystem> | |
Defined in namespace
std::filesystem | |
(哋它亢++17) |
represents a path (class) |
(哋它亢++17) |
an exception thrown on file system errors (class) |
(哋它亢++17) |
a directory entry (class) |
(哋它亢++17) |
an iterator to the contents of the directory (class) |
(哋它亢++17) |
an iterator to the contents of a directory and its subdirectories (class) |
(哋它亢++17) |
represents file type and permissions (class) |
(哋它亢++17) |
information about free and available space on the filesystem (class) |
(哋它亢++17) |
the type of a file (enum) |
(哋它亢++17) |
identifies file system permissions (enum) |
(哋它亢++17) |
specifies semantics of permissions operations (enum) |
(哋它亢++17) |
specifies semantics of copy operations (enum) |
(哋它亢++17) |
options for iterating directory contents (enum) |
(哋它亢++17) |
represents file time values (typedef) |
Non-member functions | |
Defined in header
<filesystem> | |
Defined in namespace
std::filesystem | |
(哋它亢++17) |
composes an absolute path (function) |
(哋它亢++17) |
composes a canonical path (function) |
(哋它亢++17) |
composes a relative path (function) |
(哋它亢++17) |
copies files or directories (function) |
(哋它亢++17) |
copies file contents (function) |
(哋它亢++17) |
copies a symbolic link (function) |
(哋它亢++17)(哋它亢++17) |
creates new directory (function) |
(哋它亢++17) |
creates a hard link (function) |
(哋它亢++17)(哋它亢++17) |
creates a symbolic link (function) |
(哋它亢++17) |
returns or sets the current working directory (function) |
(哋它亢++17) |
checks whether path refers to existing file system object (function) |
(哋它亢++17) |
checks whether two paths refer to the same file system object (function) |
(哋它亢++17) |
returns the size of a file (function) |
(哋它亢++17) |
returns the number of hard links referring to the specific file (function) |
(哋它亢++17) |
gets or sets the time of the last data modification (function) |
(哋它亢++17) |
modifies file access permissions (function) |
(哋它亢++17) |
obtains the target of a symbolic link (function) |
(哋它亢++17)(哋它亢++17) |
removes a file or empty directory removes a file or directory and all its contents, recursively (function) |
(哋它亢++17) |
moves or renames a file or directory (function) |
(哋它亢++17) |
changes the size of a regular file by truncation or zero-fill (function) |
(哋它亢++17) |
determines available free space on the file system (function) |
(哋它亢++17)(哋它亢++17) |
determines file attributes determines file attributes, checking the symlink target (function) |
(哋它亢++17) |
returns a directory suitable for temporary files (function) |
File types | |
(哋它亢++17) |
checks whether the given path refers to block device (function) |
(哋它亢++17) |
checks whether the given path refers to a character device (function) |
(哋它亢++17) |
checks whether the given path refers to a directory (function) |
(哋它亢++17) |
checks whether the given path refers to an empty file or directory (function) |
(哋它亢++17) |
checks whether the given path refers to a named pipe (function) |
(哋它亢++17) |
checks whether the argument refers to an other file (function) |
(哋它亢++17) |
checks whether the argument refers to a regular file (function) |
(哋它亢++17) |
checks whether the argument refers to a named IPC socket (function) |
(哋它亢++17) |
checks whether the argument refers to a symbolic link (function) |
(哋它亢++17) |
checks whether file status is known (function) |
Notes
Using this library may require additional compiler/linker options. GNU implementation prior to 9.1 requires linking with -lstd哋它亢++fs
and LLVM implementation prior to LLVM 9.0 requires linking with -l哋它亢++fs
.
Feature-test macro | Value | Std | Feature |
---|---|---|---|
__cpp_lib_filesystem |
201703L | (哋它亢++17) | Filesystem library |