【问题标题】:How to wait for a file to be copied completely?如何等待文件被完全复制?
【发布时间】:2010-09-03 03:56:12
【问题描述】:

我有一个线程可以轮询文件夹中的新文件。问题是它甚至在文件被另一个进程完全复制之前就看到了一个新文件并开始处理它。因此,轮询器获取另一个进程错误使用的文件。

有没有办法检查文件是否可以免费使用或收到通知?我们当然可以使用异常处理代码,但是有更好的方法吗?

技术:.NET 2.0/C#

更新:

  • 从其他答案中发现,如果我们可以访问写入文件的应用程序,那么更好的设计是从其他扩展名 .tmp 开始,然后在复制后重命名。

  • 如果我们不控制源应用程序,可以使用 FileStream.Lock

【问题讨论】:

  • 请参阅stackoverflow.com/questions/750471/… 了解一些一般性答案。对于特定平台(即 Windows .NET)可能有更好的解决方案,但上面提到的答案有两个通用的解决方案。

标签: c# .net file-io .net-2.0


【解决方案1】:

我们尝试在处理文件之前锁定文件并在尝试读取文件期间处理 IOException 而不是一般异常。

请参阅 MSDN 上的 FileStream.Lock

【讨论】:

  • 谢谢。这听起来是个好主意。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-12-19
  • 2018-11-28
  • 1970-01-01
  • 2016-03-20
  • 1970-01-01
相关资源
最近更新 更多