C#复制正在写入的文件

use*_*756 3 c# copy

我已经阅读了很多关于这个主题的其他帖子,但似乎都没有直接解决我的问题(这让我感到惊讶).

无论如何......我写了一个日志解析器,非常简单,我想在解析之前从本地复制远程机器上的文件.我正在尝试复制的文件正在不断写入,我在复制它时"随机"成功.有时它会工作,有时我会得到'访问被拒绝'或FileAccess错误.其他几点:

  • 每当我使用Windows资源管理器在本地复制文件时,我都不
    会有复制它的问题(这使我相信它完全
    有可能在100%的时间内复制文件).
  • 我总是可以在删除位置使用文本编辑器打开文件.
  • 我不拥有正在写入的文件,也不希望以任何方式"锁定"它,以致实际写入此文件的应用程序失败.

有没有人对如何复制这个文件有任何建议?

我正在使用的当前命令是:

File.Copy(this.txt_log_file_to_analyze.Text, sLogFileToAnalyze,true);
Run Code Online (Sandbox Code Playgroud)

Rud*_*udi 7

我想你必须使用以下方法打开文件:

File.Open(this.txt_log_file_to_analyze.Text,FileMode.Open,FileAccess.Read,FileShare.ReadWrite)
Run Code Online (Sandbox Code Playgroud)

然后复制'手动'文件的内容即ie

using (var from = File.Open("path", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
using (var to = File.OpenWrite("to_path"))
{
    from.CopyTo(to);
}
Run Code Online (Sandbox Code Playgroud)

或者如果.NET 4.5,请参阅如何将一个流的内容复制到另一个流?

使用上面的api,您可以指定不希望对文件进行独占访问.