boost文件系统无效的跨设备链接错误

我正在尝试使用boost::filesystem将文件从一个位置移动到另一个位置。 我使用boost::filesystem::rename函数,但是当我尝试这样做时,我有以下错误。

 terminate called after throwing an instance of 'boost::filesystem::filesystem_error' what(): boost::filesystem::rename: Invalid cross-device link: "./file_A.csv", "/opt/data/file_B.csv" Aborted (core dumped) 

我明白,问题是我正试图将文件从一个文件夹移动到另一个卷上安装的另一个文件夹。

有什么解决scheme不同于

  1. 复制文件,然后删除它(它给了我一些安全感)。
  2. 包装mv在一个调用std::systen

boost::filesystem是否还有其他的函数来实现我想实现的function? 我自己找不到。

我正在使用g ++和linux。

Solutions Collecting From Web of "boost文件系统无效的跨设备链接错误"

如果重命名一个文件(最终通过rename()库调用,是否包含在boost::或其他任何内容中),则会失败,因为源和目标位于不同的文件系统上,唯一的选择是复制文件并删除在验证副本完成并成功之后,保留原始文件。 这就是/bin/mv所做的事情 – 它首先尝试一个rename() ,如果错误返回的错误代码表示跨设备链接的情况,它将回退到复制和删除方案。