文件由另一个进程使用:如何解决此错误?

时间:2012-07-23 08:24:32

标签: c#

我正在尝试打开文件,但收到了:

该进程无法访问该文件,因为该文件正由另一个进程使用。文件是XML文档。有人可以帮忙吗?

  string activeDirectory = @"X:\SubGraph\";
  string[] files = Directory.GetFiles(activeDirectory);
  foreach (string fileName in files){
  FileStream file = new FileStream(fileName, FileMode.Open, FileAccess.Read);

3 个答案:

答案 0 :(得分:3)

使用文件后,你必须关闭它,我想:

foreach (string fileName in files)
{
    FileStream file = new FileStream(fileName, FileMode.Open, FileAccess.Read);
    //your code 
    file.Close();
}

答案 1 :(得分:0)

如果您在某种循环中使用这段代码,则需要在完成循环周期之前每次关闭FileStream。

file.Close();

或者像这样使用“使用”结构:

using (FileStream file = new FileStream(fileName, FileMode.Open, FileAccess.Read))
{
    // your code goes here
    file.Close();
}

此外,您最好习惯于在不再需要之后关闭所有手动创建的流。

答案 2 :(得分:0)

在某些情况下,Windows会锁定文件。在你的情况下可以是:

  1. 另一个进程是锁定文件。它可能是Windows或您的软件或谁知道。 为了发现锁定文件的人,可以使用wholockmeUnlocker等多种工具。这些工具将告诉您哪个进程正在锁定文件,甚至允许您解锁它。
  2. 也许您正在锁定自己的文件。在您的代码段中,您似乎没有关闭正在阅读的文件(也许您可以编辑您的问题并添加所有代码)。你应该记得包括:

    file.Close();

    ...或文件将保持打开状态。