c# - File.Replace 抛出 IOException

标签 c# file replace ioexception

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

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

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

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

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

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

Unable to remove the file to be replaced

该位置位于外部硬盘驱动器上,我对其拥有全部权限。

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

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

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

最佳答案

确认要替换的文件没有加载到内存中,这可能会导致文件锁定

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

根据文档:

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

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

关于c# - File.Replace 抛出 IOException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2581470/

相关文章:

c# - linq2db 为进入/来自数据库的字段指定自定义转换以转换为/来自特定 C# 类型

python - 使用 python 对文件进行排序

php - 如何开始下载文件?

Javascript:仅替换 <p></p> 内的文本?

c# - 为什么我检查控件的递归函数会跳过所有其他控件?

c# - 为什么要使用 MVC 3 模板?

c# - C# 中的 "Setting"类

android - 如何在我想稍后编辑的 Android 中存储文件?

Javascript 替换这行替换了什么

javascript - 替换字符串中的 onclick