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

c# – Stream Reader进程无法访问文件,因为它正被另一个进程使用

发布时间:2020-12-16 02:01:36 所属栏目:百科 来源:网络整理
导读:参见英文答案 How can I read a file even when getting an “in use by another process” exception?????????????????????????????????????4个 我的应用程序解析日志文件,但在尝试解析当天的文件时,我收到一条错误,指出该文件正由另一个进程使用.此日志文
参见英文答案 > How can I read a file even when getting an “in use by another process” exception?????????????????????????????????????4个
我的应用程序解析日志文件,但在尝试解析当天的文件时,我收到一条错误,指出该文件正由另一个进程使用.此日志文件当前正在写入,可以通过记事本访问,但不能通过我的应用程序访问.

现行代码:

Stream stream = new FileStream(fileToRead,FileMode.Open,FileAccess.Read);
StreamReader sr = new StreamReader(stream);

也试过这个,但没有运气:

Stream stream = new FileStream(fileToRead,FileAccess.Read,FileShare.ReadWrite);

需要对我的代码进行哪些更改才能读取另一个进程正在使用的文件.由于日志的大小和应用程序的性能,复制日志文件不是解决方案

解决方法

我们可以使用 different signature来打开文件流,并具有对其他进程的读/写访问权限:

Stream stream = new FileStream(fileToRead,FileShare.ReadWrite);

要么

Stream stream = File.Open(fileToRead,FileShare.ReadWrite);

FileShare option确定当此进程打开同一文件时其他进程如何访问同一文件.

您的第一个代码块将默认为FileShare.None:

Stream stream = new FileStream(fileToRead,FileAccess.Read);

当文件打开时,这会失败,因为它试图获得对文件的独占访问权.

但是,您需要在日志编写器中进行此操作以允许您的日志阅读器具有读取权限.

最后,尝试以管理员身份运行您的日志阅读器,因为当您“使用记事本打开”时,可能存在正在运行的操作系统权限.

(编辑:李大同)

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

    推荐文章
      热点阅读