我正在试验新的std::filesystem
库。 我希望制作一个程序,将用户列出的文件复制到给定的目录中。但是,当列出的文件位于子目录中时,使用std::filesystem::copy
或std::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
成功,但在没有(some other directory)/subdir
时files2.ext
失败。
解决方法是
- 调用
std::filesystem::path::remove_filename
以获取目录路径。 - 调用
std::filesystem::create_directories
以创建目录(如果它们不存在)。 - 调用
std::filesystem::copy
以复制所需的文件。
我想知道是否有可能将这种 3 步方法仅用于一个电话。谢谢。
std::filesystem::copy("(some directory)", "(some other directory)", std::filesystem::copy_options::recursive);
来源: http://en.cppreference.com/w/cpp/filesystem/copy_options