关于c#:FileStream:如何检查文件是否已准备好,未使用?

FileStream: how to check file is ready, not used?

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

Possible Duplicate:
Is there a way to check if a file is in use?

我看到有一种非常简单的方法可以检查文件是否已解锁,而不是由其他进程使用:

1
2
3
4
5
6
7
8
9
10
11
12
13
public static bool Check(string filepath)
{
  try
  {
    using (File.Open(filepath, FileMode.Open, FileAccess.Read, FileShare.None)) {}
  }
  catch (Exception e)
  {
    log("file not ready" + e);
    return false;
  }
  return true;
}

很好,但是如何检查该方法是否将使用filestream作为参数呢?

1
2
3
public static bool Check(FileStream f)
{
//...

有什么建议吗?谢谢你


我想这取决于您的目标,但是对于我能想象的大多数应用程序来说,检查这条路径可能不是正确的。

我猜你想检查这个,这样你就可以检查,如果不使用的话,去做一些事情(比如检查,然后写一行代码)。这里的挑战是,在中间可能会有其他人来拿文件,导致您尝试的操作失败。

一般来说,我会说,只要你想做什么就做什么,然后在那里抓住失败。你需要防御性地编码,并且无论如何都要假设这一点。额外的检查很少取得多大效果。