c# 读取其他程序正打开的文件的时“正由另一进程使用,因此该进程无法访问该文件。"的问题解决方法

c# 读取其他程序正打开的文件的时“正由另一进程使用,因此该进程无法访问该文件。"的问题解决

csharp

问题

在C#中,使用log4net输出日志到文本文件中,然后使用StreamReader打开该文件用于查看,但是由于log4net在实际占用中,在打开的时候就会抛出异常"正由另一进程使用,因此该进程无法访问该文件。"

StreamReader打开文件所用代码:

?
1
2
3
StreamReader reader = new StreamReader( "d:\debug.txt" );
  
String text = reader.ReadToEnd();

解决办法

FileStream fs = new FileStream(Path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);

StreamReader sr = new StreamReader(fs, System.Text.Encoding.Default);

注意看上面的FileShare,作用是确定文件如何由进程共享。

可选成员参数:


成员名称说明
Delete允许随后删除文件。 
Inheritable使文件句柄可由子进程继承。Win32 不直接支持此功能。 
None谢绝共享当前文件。文件关闭前,打开该文件的任何请求(由此进程或另一进程发出的请求)都将失败。 
Read允许随后打开文件读取。如果未指定此标志,则文件关闭前,任何打开该文件以进行读取的请求(由此进程或另一进程发出的请求)都将失败。但是,即使指定了此标志,仍可能需要附加权限才能够访问该文件。 
ReadWrite允许随后打开文件读取或写入。如果未指定此标志,则文件关闭前,任何打开该文件以进行读取或写入的请求(由此进程或另一进程发出)都将失败。但是,即使指定了此标志,仍可能需要附加权限才能够访问该文件。 
Write允许随后打开文件写入。如果未指定此标志,则文件关闭前,任何打开该文件以进行写入的请求(由此进程或另一进过程发出的请求)都将失败。但是,即使指定了此标志,仍可能需要附加权限才能够访问该文件。 

其他错误举例1

FileStream fs = File.OpenRead(path);

StreamReader sr = new StreamReader((System.IO.Stream)fs, System.Text.Encoding.Default);

错误提示:文件“D:\Log\Cargoabc\logfilecargoabc.txt”正由另一进程使用,因此该进程无法访问该文件。


其他错误举例2

StreamReader sr = File.OpenText(url);

错误提示:错误提示:文件“D:\Log\Cargoabc\logfilecargoabc.txt”正由另一进程使用,因此该进程无法访问该文件。

文章地址: http://www.daojia100.com/jingyan/info/512ef5422e05e81ca83e051e.aspx
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值