加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C#复制正在写入的文件

发布时间:2020-12-16 01:57:29 所属栏目:百科 来源:网络整理
导读:我已经阅读了很多关于这个主题的其他帖子,但似乎都没有直接解决我的问题(这让我感到惊讶). 无论如何……我写了一个日志解析器,非常简单,我想在解析之前从本地复制远程机器上的文件.我正在尝试复制的文件正在不断写入,我在复制它时“随机”成功.有时它会工作,
我已经阅读了很多关于这个主题的其他帖子,但似乎都没有直接解决我的问题(这让我感到惊讶).

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

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

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

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

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

解决方法

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

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

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

using (var from = File.Open("path",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,您可以指定不希望对文件进行独占访问.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读