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

标签 .net file copy

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

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

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

最佳答案

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

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

  return true;
}

关于.net - 如何测试文件是否在 .NET 中完全复制,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1152140/

相关文章:

.net - 现在我的本地主机运行速度很慢,因为我在 Windows 7 和 Asp.net MVC 上

perl - 从Perl中的大文件读取特定行

c# - 空闲文件流消耗的内存

html - 如何隐藏我的源代码以免被复制

ant - 使用Ant复制子文件夹的内容

c# - sqlce服务器: How to Store a Single Char?

c# - 您是否应该实现 IDisposable.Dispose() 以使其永远不会抛出?

c# - 如何在不关闭流的情况下取消 NetworkStream.ReadAsync

c++ - 读取 cmd 生成的文件,结果出现 3 个奇怪的符号

php - 如何将文件夹中的所有内容复制到php中的目录