CodeWalk

filesystem创建/删除/重命名操作与错误处理

作者:专业代码师 · 2026-05-30 12:55

请介绍 中创建目录(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)