我已经阅读了很多关于这个主题的帖子,但似乎都没有直接解决我的问题(这让我感到惊讶)。
无论如何......我写了一个日志解析器,非常简单,我想在解析之前从本地复制远程机器上的文件。我正在尝试复制的文件正在不断写入,我在复制它时“随机”成功。有时它会工作,有时我会得到'访问被拒绝'或FileAccess错误。其他几点:
有没有人对如何复制此文件有任何建议?
我正在使用的当前命令是:
File.Copy(this.txt_log_file_to_analyze.Text, sLogFileToAnalyze,true);
答案 0 :(得分: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看到How do I copy the contents of one stream to another?
使用上面的api,您可以指定您不希望对该文件进行独占访问。