【发布时间】:2014-08-04 06:47:06
【问题描述】:
我正在尝试使用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)
我知道问题在于我试图将文件从一个文件夹移动到另一个安装在不同卷上的文件夹。
有什么不同的解决办法
- 复制文件然后删除它(这给了我一些安全感)。
- 在对
std::systen的调用中包装mv?
boost::filesystem 中还有其他功能可以实现我想要实现的目标吗?我自己找不到。
我正在使用 g++ 和 linux。
【问题讨论】:
-
选项 1 是
/bin/mv在rename()的初始尝试失败时所做的... -
非常感谢。如果您在回答中坚持回答,我会将其标记为正确的。
-
这也发生在 Python
os.rename()。
标签: c++ linux boost-filesystem