复制文件时是否可以自动生成不存在的目录?

时间:2017-03-23 02:20:12

标签: c++ c++17 std-filesystem

我正在尝试使用新的std::filesystem库。 我希望制作一个程序,将用户列出的文件复制到给定目录中。但是当列出的文件位于子目录中时,使用std::filesystem::copystd::filesystem::copy_file的天真方法不起作用。

例如,假设我要复制(some directory)中的一些文件,比如说

(some directory)/file1.ext
(some directory)/subdir/file2.ext

进入(some other directory),以便我得到

(some other directory)/file1.ext
(some other directory)/subdir/file2.ext

目录(some directory)可能包含无需复制的文件或目录等。如果我只使用std::filesystem::copy,那么file1.ext会成功,但files2.ext会在没有(some other directory)/subdir时失败。

解决方法是

  1. 调用std::filesystem::path::remove_filename以获取目录路径。
  2. 如果目录不存在,请调用std::filesystem::create_directories制作目录。
  3. 致电std::filesystem::copy复制所需文件。
  4. 我想知道是否有可能只用一个电话来实现这个三步法。谢谢。

1 个答案:

答案 0 :(得分:0)

std::filesystem::copy("(some directory)", "(some other directory)", std::filesystem::copy_options::recursive);

来源:http://en.cppreference.com/w/cpp/filesystem/copy_options