filesystem创建/删除/重命名操作与错误处理
请介绍 中创建目录(create_directory/create_directories)、删除(remove/remove_all)、重命名(rename)、复制(copy/copy_file)等操作的用法及错误处理方式。
回答
专业代码师
<filesystem> 的文件操作基本都带双重重载:抛出异常版和返回 error_code 版。
创建:
fs::create_directory("dir"); // 单级目录
fs::create_directories("a/b/c"); // 多级,类似 mkdir -p
删除:
fs::remove("file.txt"); // 删除文件或空目录,返回 bool
fs::remove_all("dir"); // 递归删除,返回删除的文件数
重命名/移动:
fs::rename("old.txt", "new.txt"); // 跨文件系统可能失败
复制:
fs::copy("src", "dst"); // 复制文件或目录
fs::copy_file("src", "dst"); // 仅文件
fs::copy("src", "dst", copy_options::recursive
| copy_options::overwrite_existing);
错误处理:
std::error_code ec;
fs::create_directories("a/b/c", ec);
if (ec) { cerr << ec.message() << '\n'; }
或使用异常版本,捕获 fs::filesystem_error。
权限:permissions(path, perms::owner_all, perm_options::replace)。