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. 別のプロセスはファイルをロックすることです。それはウィンドウズかあなたのAVソフトウェアか誰が知っているかもしれません。誰がファイルをロックしているかを発見するために、wholockmeUnlockerのようないくつかのツールがあります。これらのツールは、どのプロセスがファイルをロックしているかを教えてくれ、さらにはファイルのロックを解除することもできます。
  2. たぶんあなたはあなた自身のファイルをロックしています。コードスニペットで、読んでいるファイルを閉じていないようです(質問を編集して、すべてのコードを追加できるかもしれません)。以下を含めることを忘れないでください。

    file.Close();

    ...またはファイルは開いたままになります。

于 2012-07-23T08:32:57.410 に答える