std::filesystem::copy_options
Defined in header <filesystem>
|
||
enum class copy_options { none = /* unspecified */, |
(since C++17) | |
This type represents available options that control the behavior of the copy() and copy_file() function.
copy_options
satisfies the requirements of BitmaskType (which means the bitwise operators operator&, operator|, operator^, operator~, operator&=, operator|=, and operator^= are defined for this type). none
represents the empty bitmask; every other enumerator represents a distinct bitmask element.
Member constants
At most one copy option in each of the following options groups may be present, otherwise the behavior of the copy functions is undefined.
Member constant | Meaning |
---|---|
options controlling copy_file() when the file already exists | |
none
|
Report an error (default behavior) |
skip_existing
|
Keep the existing file, without reporting an error. |
overwrite_existing
|
Replace the existing file |
update_existing
|
Replace the existing file only if it is older than the file being copied |
options controlling the effects of copy() on subdirectories | |
none
|
Skip subdirectories (default behavior) |
recursive
|
Recursively copy subdirectories and their content |
options controlling the effects of copy() on symbolic links | |
none
|
Follow symlinks (default behavior) |
copy_symlinks
|
Copy symlinks as symlinks, not as the files they point to |
skip_symlinks
|
Ignore symlinks |
options controlling the kind of copying copy() does | |
none
|
Copy file content (default behavior) |
directories_only
|
Copy the directory structure, but do not copy any non-directory files |
create_symlinks
|
Instead of creating copies of files, create symlinks pointing to the originals. Note: the source path must be an absolute path unless the destination path is in the current directory. |
create_hard_links
|
Instead of creating copies of files, create hardlinks that resolve to the same files as the originals |
Example
#include <cstdlib> #include <iostream> #include <fstream> #include <filesystem> namespace fs = std::filesystem; int main() { fs::create_directories("sandbox/dir/subdir"); std::ofstream("sandbox/file1.txt").put('a'); fs::copy("sandbox/file1.txt", "sandbox/file2.txt"); // copy file fs::copy("sandbox/dir", "sandbox/dir2"); // copy directory (non-recursive) const auto copyOptions = fs::copy_options::update_existing | fs::copy_options::recursive | fs::copy_options::directories_only ; fs::copy("sandbox", "sandbox_copy", copyOptions); static_cast<void>(std::system("tree")); fs::remove_all("sandbox"); fs::remove_all("sandbox_copy"); }
Possible output:
. ├── sandbox │ ├── dir │ │ └── subdir │ ├── dir2 │ ├── file1.txt │ └── file2.txt └── sandbox_copy ├── dir │ └── subdir └── dir2 8 directories, 2 files
See also
(C++17) |
copies files or directories (function) |
(C++17) |
copies file contents (function) |