FileStream:如何检查文件是否准备好,未使用?

时间:2012-09-03 22:46:42

标签: c# .net file filestream

  

可能重复:
  Is there a way to check if a file is in use?

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

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;
}

那太棒了,但是如何检查Method是否会使用FileStream作为参数?

public static bool Check(FileStream f)
{ 
//...

有什么建议吗?谢谢

1 个答案:

答案 0 :(得分:2)

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

我猜你要检查这个,以便你可以检查,如果没有使用,去做一些事情(即检查然后写一行代码)。这里的挑战是,在中间,其他人可能会出现并拿走文件,导致您在尝试的操作中失败。

一般来说,我只是试着做任何你想做的事情并抓住那里的失败。无论如何,你需要进行防御性编码并假设这一点。额外的检查很少能实现。