首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用覆盖执行boost::filesystem copy_file

如何使用覆盖执行boost::filesystem copy_file
EN

Stack Overflow用户
提问于 2009-05-06 13:07:54
回答 4查看 48K关注 0票数 50

Windows API函数CopyFile有一个参数BOOL bFailIfExists,它允许您控制是否要覆盖目标文件(如果它存在)。

boost::filesystem copy_file函数没有这样的参数,如果目标文件存在,该函数将失败。有没有一种优雅的方法来使用boost copy_file函数并覆盖目标文件?或者直接使用Windows API更好?我目前的目标平台是Windows,但我更喜欢在可能的情况下使用STL和boost来保持代码的平台无关性。

谢谢。

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2010-04-27 07:25:39

boost::filesystem::copy_option::overwrite_if_exists还有第三个枚举参数给copy_file

代码语言:javascript
运行
复制
copy_file(source_path, destination_path, copy_option::overwrite_if_exists);

https://www.boost.org/doc/libs/1_75_0/libs/filesystem/doc/reference.html

票数 74
EN

Stack Overflow用户

发布于 2010-11-16 22:32:22

当心使用copy_option::overwrite_if_exists的boost::copy_file!如果目标文件存在并且小于源文件,则该函数将仅覆盖目标文件中的第一个大小(From_file)字节。

至少对我来说,这是一个警告,因为我假定copy_option::overwrite_if_exists会影响文件,而不是内容

票数 19
EN

Stack Overflow用户

发布于 2009-05-06 13:17:09

首先测试目标文件是否存在,如果存在,则将其删除:

代码语言:javascript
运行
复制
if (exists (to_fp))
    remove (to_fp);
copy_file (from_fp, to_fp);

或者,如果您担心文件会出现在测试和副本之间,那么您可以写入一个临时文件,然后将其重命名为目标文件。

票数 8
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/829468

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档