ShFileOperation磁盘大小中止选项

时间:2014-03-16 22:52:17

标签: delphi shell abort

我正在使用ShFileOperation将文件复制到SD卡,它几乎正常工作!

我有一些大文件,5GB及更高版本。当SD卡为空时,这一切都很顺利。但是,当我更新SD卡上的文件时,ShFileOperation将检查剩余磁盘大小,如果文件大于可用空间,它将显示“无空间”对话框并中止。

当文件覆盖现有文件时,问题就出现了,而新东西可能只有3MB或4MB。在检查磁盘空间之前,ShFileOperation不首先检查目标文件是否存在。

我已经检查过MSDN网站上所有可用的Flags,我唯一能找到的就是FOF_NOERRORUI,但这对我来说有点过于野蛮和极权。杀掉所有错误消息只是为了克服一个问题。

有什么方法可以让ShFileOperation不进行磁盘空间检查,但是如果它们发生则仍然会声明严重错误?

感谢。

2 个答案:

答案 0 :(得分:1)

  

有什么方法可以让ShFileOperation不进行磁盘空间检查,但是如果它们发生则仍然会声明严重错误?

您可以使用FOF_NOERRORUI来取消错误用户界面。这确实是你想要的。但是,您需要为任何错误提供UI,因为您要求系统不要。该标志基本上意味着,让我负责报告错误。"

答案 1 :(得分:1)

在这种情况下,我建议对每个文件使用CopyFileEx(),利用其进度回调来根据需要更新自己的进度对话框。