首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >复制文件,即使目标存在(在Qt中)

问复制文件,即使目标存在(在Qt中)
EN

Stack Overflow用户
提问于 2013-02-18 12:07:06
回答 4查看 21.8K关注 0票数 27

在QFile::副本文档中,它说

如果名为newName的文件已经存在,copy()返回false (也就是说,QFile不会覆盖它)。

但即使目标存在,我也需要复制一个文件。在Qt中有什么解决办法吗?

删除该文件是显而易见的解决方案,但它会引发一个竞争条件.

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2013-02-18 12:19:46

代码语言:javascript
复制
if (QFile::exists("/home/user/dst.txt"))
{
    QFile::remove("/home/user/dst.txt");
}

QFile::copy("/home/user/src.txt", "/home/user/dst.txt");
票数 43
EN

Stack Overflow用户

发布于 2013-02-18 12:22:25

当然,最明显的解决方案是在进行复制之前删除存在的文件。

但是,请注意,这样做为经典的种族条件打开了代码,因为在一个典型的多任务操作系统上,不同的进程可能会在应用程序的删除和复制调用之间重新创建文件。这将导致复制仍然失败,因此您需要做好准备(也许还需要重新尝试删除,但这可能会引入计数的需要,这样您就不会永远尝试、不停地尝试)。

票数 17
EN

Stack Overflow用户

发布于 2014-10-08 05:06:32

我能想到的最简单的尝试是:

代码语言:javascript
复制
while !QFile::copy("/home/user/src.txt", "/home/user/dst.txt")
{
    QFile::remove("/home/user/dst.txt");
}

但这仍然不是一个真正的解决方案,因为一些竞赛条件是不会阻止删除的。

我目前正在寻找一种方法来处理作为输出的网页的编写,但是不需要在删除和复制之间进行自动刷新。

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

https://stackoverflow.com/questions/14935919

复制
相关文章

相似问题

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