3

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

无论如何......我写了一个日志解析器,非常简单,我希望在解析之前从本地远程机器复制文件。我试图复制的文件不断被写入,我在复制它时“随机”成功。有时它会起作用,有时我会收到“访问被拒绝”或 FileAccess 错误。其他几点:

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

有人对如何复制此文件有任何建议吗?

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

File.Copy(this.txt_log_file_to_analyze.Text, sLogFileToAnalyze,true);
4

1 回答 1

7

我想您必须使用以下命令打开文件:

File.Open(this.txt_log_file_to_analyze.Text,FileMode.Open,FileAccess.Read,FileShare.ReadWrite)

然后“手动”复制文件的内容,即

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

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

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

于 2013-09-26T08:55:35.787 回答