如何使用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:我删除并重新创建了文件夹,问题得到解决,不确定原因

答案

这里有两个潜在的问题:

  1. 由于你使用experimental::filesystem::copy_options::none,如果文件已经存在,你会得到一个例外 - 参见段落“否则,如果目标文件已经存在”here
  2. 如果源文件夹包含带文件的子文件夹,directory_iterator也将迭代它们,但如果您尝试复制嵌套更深的文件,则还需要创建目标目录层次结构。

以上是关于如何使用c ++文件系统库将文件复制到另一个目录的主要内容,如果未能解决你的问题,请参考以下文章

linux如何怎样将一个目录下的文件复制到另一个目录下?

如何使用 PHP 将文件从一个目录复制到另一个目录?

java如何拷贝文件到另一个目录下

如何复制大量音乐文件到Daphile硬盘

如何使用 c 编程将一些字符串从文件复制到另一个文件

linux中如何移动文件