2011-06-27 10 views
1

私はすでに「他のプロセスが使用しているファイル」について数十の質問があることを知っています。しかし、彼らはすべて、ファイルを読み込もうとしているか、すでに別のプロセスによって使用されているファイルに書き込もうとしているという問題があります。私は、ファイルが別のプロセスで使用されているかどうかをチェックしたいだけです(そのあとIOアクションはありません)。 私は答えを他の場所で見つけられませんでした。 C#の別のプロセスでファイルやフォルダが使用されているかどうかを知るにはどうすればよいですか?ファイルのフォルダが別のプロセスによって使用されているかどうかを知る方法?

+0

可能な重複[?ファイルロックの確認方法](http://stackoverflow.com/questions/1304/how-to-check-for-file-ロック) –

答えて

3

あなたが質問で説明したように、唯一の方法は、ファイルを別のプロセスで使用されていないかどうかを最初に調べることです。ファイルは、ファイルオープンの書き込みを開こうとすると、存在する場合は、私がいつか前に実装され、このメソッドを使用することができます

は、アイデアがあるので、失敗したならば、多分別のプロセスで使用されるファイル:

public static bool IsFileInUse(string fileFullPath, bool throwIfNotExists) 
{ 
    if (System.IO.File.Exists(fileFullPath)) 
    { 
     try 
     { 
      //if this does not throw exception then the file is not use by another program 
      using (FileStream fileStream = File.OpenWrite(fileFullPath)) 
      { 
       if (fileStream == null) 
        return true; 
      } 
      return false; 
     } 
     catch 
     { 
      return true; 
     } 
    } 
    else if (!throwIfNotExists) 
    { 
     return true; 
    } 
    else 
    { 
     throw new FileNotFoundException("Specified path is not exsists", fileFullPath); 
    } 
} 
+0

これは良い方法です、ありがとう。しかし、最も簡単な方法で、ほとんどの人がまずそれを考えます。私はちょうど.NETでそれを行う標準的な方法があるかどうかを見たいと思っていました。しかし、助けてくれてありがとう。 –

+0

あなたは歓迎です:) –

+0

他のスレッドを見てみると、唯一の方法はtry catchブロック内でファイルを開こうとしているかのように見えます。 –

関連する問題