std::experimental::filesystem::copy_options
来自cppreference.com
< cpp | experimental | fs
在标头 <experimental/filesystem> 定义
|
||
enum class copy_options { none = 0, |
(文件系统 TS) | |
此类型表示控制 copy() 和 copy_file() 函数的行为的可用选项。
copy_options
满足 位掩码类型 (BitmaskType) 的规定(这表示按位运算符 operator&、operator|、operator^、operator~、operator&=、operator|= 和 operator^= 对此类型有定义)。
成员常量
以下每个选项组中最多只能给出一个复制选项,否则复制函数的行为未定义。
成员常量 | 值 | 含义 |
---|---|---|
当文件已经存在时控制 copy_file() 的选项 | ||
none
|
0 | 报告错误(默认行为)。 |
skip_existing
|
1 | 保持现有文件,不报告错误。 |
overwrite_existing
|
2 | 替换现有文件。 |
update_existing
|
4 | 仅当现有文件比被复制文件更旧时替换它。 |
控制 copy() 对子目录效果的选项 | ||
none
|
0 | 跳过子目录(默认行为)。 |
recursive
|
8 | 递归复制子目录及其内容。 |
控制 copy() 对符号链接效果的选项 | ||
none
|
0 | 跟随符号链接(默认行为)。 |
copy_symlinks
|
16 | 复制符号链接为符号链接,而非其所指向的文件。 |
skip_symlinks
|
32 | 跳过符号链接。 |
控制 copy() 执行的复制种类的选项 | ||
none
|
0 | 复制文件内容(默认行为)。 |
directories_only
|
64 | 复制目录结构,但不复制任何非目录文件。 |
create_symlinks
|
128 | 不复制文件,而是创建指向原文件的符号链接。注意:除非目标路径在当前目录中,否则原路径必须为绝对路径。 |
create_hard_links
|
256 | 不复制文件,而是创建指向与原路径解析为相同文件的硬链接。 |
示例
运行此代码
#include <experimental/filesystem> #include <fstream> #include <iostream> namespace fs = std::experimental::filesystem; int main() { fs::create_directories("sandbox/dir/subdir"); std::ofstream("sandbox/file1.txt").put('a'); fs::copy("sandbox/file1.txt", "sandbox/file2.txt"); // 复制文件 fs::copy("sandbox/dir", "sandbox/dir2"); // 复制目录(非递归) // sandbox 持有 2 个文件和 2 个目录,其一有一个子目录 // sandbox/file1.txt // sandbox/file2.txt // sandbox/dir2 // sandbox/dir // sandbox/dir/subdir fs::copy("sandbox", "sandbox/copy", fs::copy_options::recursive); // sandbox/copy 持有以上文件和子目录的副本 fs::remove_all("sandbox"); }
参阅
复制文件或目录 (函数) | |
复制文件内容 (函数) |