如何测试文件是否在.NET中完全复制 [英] How to test if a file is fully copied in .NET

查看:128
本文介绍了如何测试文件是否在.NET中完全复制的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

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

I am monitoring a folder for new files and need to process them. The problem is that occasionally file opening fails, because system has not finished copying it.

什么是如果该文件已完成复制到测试的正确方法?

What is the correct way to test if the file is finished copying?

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

Clarification: I don't have write permissions to the folder/files and cannot control the copying process (it's the user).

推荐答案

我觉得唯一可靠的办法做,这是试图以独占方式打开该文件并捕获特定的异常。我平时讨厌使用正常的应用程序逻辑的例外,但恐怕对于这种情况有没有其他的方法(至少我还没有找到一个尚未):

I think the only sure way to do this is by trying to open the file exclusively and catching a specific exception. I usually hate using exceptions for normal application logic, but I'm afraid for this scenario there's no other way (at least I haven't found one yet):

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

  return true;
}

这篇关于如何测试文件是否在.NET中完全复制的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆