您的位置:首页 > 编程语言 > C#

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

2013-08-14 17:59 1221 查看

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

csharp

问题

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

StreamReader打开文件所用代码:

?

解决办法

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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐