File.Replace抛出IOException

时间:2010-04-05 22:05:44

标签: c# file replace ioexception

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

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

所以我写了一个小小的C#app来尝试解决这个问题。

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

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

然而,替换不起作用。我得到以下IOException:

  

无法删除该文件   取代

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

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

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

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

1 个答案:

答案 0 :(得分:1)

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

尝试使用using语句自动处理资源

根据文件:

如果destinationBackupFileName位于不同的驱动器上,则不会在文档中指出它,而是抛出IOException,并显示消息“无法删除要替换的文件”。扔了

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