关于c#:检查文件是否打开

Check if a file is open

本问题已经有最佳答案,请猛点这里访问。

有没有办法找到一个文件是否已经打开?


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
protected virtual bool IsFileinUse(FileInfo file)
{
     FileStream stream = null;

     try
     {
         stream = file.Open(FileMode.Open, FileAccess.ReadWrite, FileShare.None);
     }
     catch (IOException)
     {
         //the file is unavailable because it is:
         //still being written to
         //or being processed by another thread
         //or does not exist (has already been processed)
         return true;
     }
     finally
     {
         if (stream != null)
         stream.Close();
     }
     return false;
}


作为pranay蛙",但我们要确保我们接近我们的file handle: </P >

1
2
3
4
5
6
7
8
9
10
11
12
13
public bool IsFileInUse(string path)
{
  if (string.IsNullOrEmpty(path))
    throw new ArgumentException("'path' cannot be null or empty.","path");

  try {
    using (var stream = new FileStream(path, FileMode.Open, FileAccess.Read)) { }
  } catch (IOException) {
    return true;
  }

  return false;
}


如果你想下,你的支票,如果一个文件在你的冰开放开放网络的安全,那么NO。(至少没有去注低电平和examine file handle这是个开放的系统。) </P >

此外,信息会老,当你得到它。甚至如果测试会返回这样的文件是不开放的,它可以有一opened之前,你有一个机会来使用返回值。 </P >

所以,适当的方式到冰的情况下手柄到尝试到打开的文件,和任何可能的错误比handle的灵性。 </P >


设定的。在指定的类的Create a将这套《open file逻辑或至少测试(isfileavailable)。这将允许你到的地方的例外管理级和一个负责任的丈夫,具体来说和可重复使用的信息。你可以甚至适用于进一步的逻辑,如测试的文件尺寸要看如果冰被书面的文件等,提供一个更详细的反应。它将你的消费也丈夫码多清洁。 </P >