3

我有一个可以修改图像的应用程序。在某些情况下,这会使文件大小更小,在某些情况下更大。

该程序没有“如果结果具有更大的文件大小,则不替换文件”的选项。

所以我写了一个小 C# 应用程序来尝试解决这个问题。

我没有覆盖文件,而是让应用程序将结果写入当前文件夹下的文件夹,并将该文件夹命名为 Test。

我编写的 C# 应用程序比较抓取两个文件夹的内容,并将文件的完整路径放在两个 List 对象中。然后我比较和替换。

但是替换不起作用。我得到以下 IOException:

无法删除要替换的文件

该位置位于外部硬盘驱动器上,我拥有完整的权限。

现在,我知道我可以按顺序执行 File.Delete 和 File.Move,但是这个异常让我对为什么这个特定设置不起作用感兴趣。

这是源代码: http: //pastebin.com/4Vq82Umu

是的,指定为 Replace 函数的最后一个参数的文件确实存在。

4

1 回答 1

3

验证要替换的文件是否未加载到内存中,这可能导致文件锁定

尝试使用 using 语句自动释放资源,

根据文档:

如果 destinationBackupFileName 位于不同的驱动器上,则不会按照文档所述将其删除,而是会引发 IOException,并显示消息“无法删除要替换的文件”。被抛出

http://msdn.microsoft.com/en-us/library/9d9h163f.aspx

于 2010-04-05T22:12:42.957 回答