0

可能重复:
有没有办法检查文件是否正在使用?

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

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 作为参数?

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

有什么建议么?谢谢

4

1 回答 1

2

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

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

一般来说,我会说只是尝试做任何你想做的事情并在那里捕捉失败。您需要进行防御性编码并假设这一点。额外的检查很少能取得多大的成就。

于 2012-09-03T22:51:16.687 回答