如何使用c ++文件系统库将文件复制到另一个目录
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用c ++文件系统库将文件复制到另一个目录相关的知识,希望对你有一定的参考价值。
我正在尝试自动化一些图像处理,一旦我处理了图像,我想将它移动到另一个目录。
我尝试过使用std :: experimental :: filesystem :: copy和std :: experimental :: filesystem :: copy_file,但是我收到错误“无法复制文件:copy_file(p1,p2,options):无效的参数:不准操作“
#include <filesystem>
#include <iostream>
#include <string>
using namespace std;
int main(int argc, const char* argv[]) {
if (argc < 2) {
cout << "no directory specified" << endl;
return 0;
}
experimental::filesystem::path inputPath(argv[1]);
experimental::filesystem::path
for (auto const & entry : experimental::filesystem::directory_iterator(inputPath)) {
string src = entry.path().string();
experimental::filesystem::path dest("C:\\Users\\Keelan\\Desktop\\MatchTest\\IMG_Copy\\"+ entry.path().filename().string());
cout << entry.path() << endl;
cout << "Copying " << src << " to " << dest << endl;
experimental::filesystem::copy_file(entry.path(), dest, experimental::filesystem::copy_options::none);
}
return 0;
}
到目前为止,我还没有成功使用这些复制功能。我已经看到了涉及重定向文件流的其他解决方案,但我不认为这是合适的,因为我将按需处理文件并需要最小化响应时间。
编辑:我正在复制的文件夹存在,所有用户都有读/写权限
编辑2:我删除并重新创建了文件夹,问题得到解决,不确定原因
答案
这里有两个潜在的问题:
- 由于你使用
experimental::filesystem::copy_options::none
,如果文件已经存在,你会得到一个例外 - 参见段落“否则,如果目标文件已经存在”here - 如果源文件夹包含带文件的子文件夹,
directory_iterator
也将迭代它们,但如果您尝试复制嵌套更深的文件,则还需要创建目标目录层次结构。
以上是关于如何使用c ++文件系统库将文件复制到另一个目录的主要内容,如果未能解决你的问题,请参考以下文章