2010-04-05 96 views
2

我有一个可以修改图像的应用程序。在某些情况下,这会使文件大小变小,在某些情况下会变大。File.Replace抛出IOException

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

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

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

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

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

无法删除该文件是 更换

位置是外部硬盘驱动器,关于这一点我有充分的权利。

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

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

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

回答

1

验证要更换你的文件不被加载到内存中,这可能会在文件中根据文件会导致锁

尝试使用using语句来自动配置资源,

如果destinationBackupFileName位于不同的驱动器上,则不会像文档状态那样删除它,而会抛出IOException,并显示消息“无法删除要替换的文件”。被抛出

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

+0

我去了我用的是类,而不是他们的单独一个自IDisposable继承。我如何实现在这个使用? – KdgDev 2010-04-05 23:24:52

+0

如果您为文件打开了FileStream,它将实现IDisposable。 – 2012-03-01 06:29:14

相关问题