如何测试文件是否在.NET中完全复制

Vie*_*urs 12 .net copy file

我正在监视新文件的文件夹,需要处理它们.问题是偶尔文件打开失败,因为系统还没有完成复制.

测试文件是否完成复制的正确方法是什么?

澄清:我没有文件夹/文件的写权限,无法控制复制过程(它是用户).

Phi*_*ert 11

我认为唯一可靠的方法是尝试独占打开文件并捕获特定的异常.我通常讨厌使用普通应用程序逻辑的异常,但我担心这种情况没有其他办法(至少我还没有找到):

public bool FileIsDone(string path)
{
  try
  {
    using (File.Open(path, FileMode.Open, FileAccess.Read, FileShare.None))
    {
    }
  }
  catch(UnauthorizedAccessException)
  {
    return false;
  }

  return true;
}
Run Code Online (Sandbox Code Playgroud)