猿问

非阻塞工作者-中断文件复制

我正在处理非常大的文件,大小超过数百GB。用户需要能够在磁盘之间移动这些文件,并且该用户位于没有默认文件管理器的受限系统上。用户有可能意识到自己犯了一个错误并取消了操作,据我所知,用户将不得不等待当前的复制或重命名操作完成。这可能会使他们感到沮丧,因为他们等待可能要等待几分钟的时间,只是看到仍然复制了许多GB文件。在复制的情况下,我可以删除第二个文件,但是在重命名的情况下(我正在使用它来移动文件),我必须反向重复该操作才能撤消它,这是完全不可接受的。

有没有什么方法可以中断QFile文档中没有看到的copy()和rename(),还是需要将我自己的类放在一起以处理复制和重命名?


月关宝盒
浏览 444回答 2
2回答

海绵宝宝撒

我认为您正在寻找的功能不存在。您可以做的是,不是使用copy()函数,而是创建一个新文件,然后从旧文件逐渐读取(qint64 maxSize)到QByteArray,然后将(const QByteArray&byteArray)写入新文件。这样,您可以自己控制流程,只需检查用户是否在每次读/写之间都没有按取消键即可。
随时随地看视频慕课网APP
我要回答