3

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

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

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

3 回答 3

3

使用文件后,您必须关闭它,我认为:

foreach (string fileName in files)
{
    FileStream file = new FileStream(fileName, FileMode.Open, FileAccess.Read);
    //your code 
    file.Close();
}
于 2012-07-23T08:30:06.277 回答
0

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

file.Close();

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

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

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

于 2012-07-23T08:30:40.303 回答
0

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

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

    文件。关闭();

    ... 否则文件将保持打开状态。

于 2012-07-23T08:32:57.410 回答