该进程无法访问该文件,因为该文件正由另一个进程使用

时间:2010-09-27 23:05:39

标签: c#

我有来自特定目录的tif文件,我有一个函数来读取所有tif文件并将其转换为文本,转换后我将其移动到成功转换后名为“Completed”的文件夹,并且一旦转换失败,将其移动到Failed文件夹。问题是当我使用System.IO.File的Move方法时,它引发了一个错误,说

  

“进程无法访问该文件,因为它正由另一个进程使用”

问题是什么,我关闭了文件,我处理了它,但仍然发生了错误?

4 个答案:

答案 0 :(得分:1)

请确保在处理过程中关闭文件以及与其相关的任何内容。

(因为您选择不向我们展示代码,我们真的不知道在处理过程中创建了什么。)

查找MemoryStreams,MemoryMapped Files,文件支持的图像,存储在容器中的文件句柄或IEnumerable等等。

您有正确的想法确保明确.Close()已知引用和Dispose of objects,但某些内容仍然保留文件。

答案 1 :(得分:1)

我有这样的问题,问题是如果我使用Image类的“FromFile”方法创建它,我无法删除原始文件。相反,我使用“FromStream”方法创建它(确保在结束时关闭并处理它)。

我修改了我的代码,就像方法#3一样:http://dotnetguts.blogspot.com/2009/07/process-cannot-access-file-because-it.html

答案 2 :(得分:0)

确保您的转化过程在移动前已完全完成。有时它看起来像是一个过程,但实际上并非如此。

答案 3 :(得分:0)

确保在对其执行不同操作之前关闭StreamReader,StreamWriter以及正在操作该文件的任何其他进程。 例如如果您正在使用StreamReader阅读并需要写入文件关闭StreamReader,然后启动StreamWriter。

或者您可以使用Filestream,我听说在.NET Framework 4.0中他们引入了异步文件操作。