c# 读写文件时文件正由另一进程使用,因此该进程无法访问该文件

log20170317.txt是一个自动任务生成log4net的日志文件,自动任务一直在执行。

今需要对日志文件读取出来,显示在日志查询里,需要用到了IO流。

1、

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

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

2、

StreamReader sr = File.OpenText(url);

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

3、

string textInfo = File.ReadAllText(filePath,Encoding.Default);

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

4、

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

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

StringBuilder sb = new StringBuilder();
while (!sr.EndOfStream)
{
sb.AppendLine(sr.ReadLine()+"<br>");
}

正确读取方式

总结:

这样的情况,不单要与只读方式打开txt文件,而且,需要共享锁。还必须要选择flieShare方式为ReadWrite。因为随时有其他程序对其进行写操作。

时间: 2024-08-05 23:41:01

c# 读写文件时文件正由另一进程使用,因此该进程无法访问该文件的相关文章

【转】“正由另一进程使用,因此该进程无法访问该文件”的问题&amp;解决方法

正在写一个手指画图的程序C# + WPF其中有一部分是加载外部某PNG文件,放入BitmapImage,再作为Image的Source显示在Canvas上画了几笔之后,再存回这个PNG文件================问题=================BitmapImage这个对象没有Dispose方法,始终无法释放,因此在之后FileStream试图写这个文件时出现"正由另一进程使用,因此该进程无法访问该文件"的问题BitmapImage bitmap = new Bitmap

PHP加载大文件时require和file_get_contents的性能对比

在开发过程中发现,用require来加载一个很大(几百K,甚至几兆)的配置文件时,会造成响应超时.如果把这个配置文件的内容序列化后,用file_get_contents获取文件然后反序列化的方法来加载,就会快很多. 经过近两周的研究,大概知道了其中的原因. 首先,还从PHP的流程说起,PHP其实有两个流程,一个是启动的流程,一个是响应请求的流程.PHP作为Apache的一个模块,向Apache注册了两个函数,一个是Aapche启动的时候运行的函数:sapi_startup:一个是Apache接收

word2007在试图打开文件时遇到错误解决方法

当您尝试在 Microsoft Office Word 2007 中打开 .docx 文件时,该文件打不开.此外,您还会收到以下错误消息: Word 在试图打开文件时遇到错误.请尝试下列方法:* 检查文档或驱动器的文件权限.* 确保有足够的内存和磁盘空间.* 用文本恢复转换器打开文件. 原因 发生此问题的原因是由于恢复文档被保存为扩展名为 .docx 的自动保存文档 (*.asd) 文件. 要解决此问题,请按照下列步骤操作: 确认 .asd 文件的默认位置.为此,请按照下列步骤操作: 启动 Wo

禁止浏览器直接访问php文件

框架中很多php文件并不是用来如果熟悉框架的路径就能直接访问这个文件,虽然访问到了也不能看到什么(他看到的是编译过后的html文件),但还是觉的很不安全. 可以通过下面这种方法拒绝他人的从浏览器中的访问 在框架开始时设置:define('IN_SYS', TRUE); 在需要禁止访问的php文件最开始设置: if(!defined('IN_SYS')) { exit('禁止访问'); } 这样我们只能在框架内部访问这个文件(因为我们在框架运行开始时设置了IN_SYS),而浏览器直接访问时由于没有

[转]]c# 读写文件时文件正由另一进程使用

c# 读写文件时文件正由另一进程使用,因此该进程无法访问该文件,在IO处理上遇到了无法操作的问题. 文件“D:\log.txt”正由另一进程使用,因此该进程无法访问该文件. log.txt是一个日志文件,不定时都可能由另外的程序对它进行日志记录写入操作. 今需要对日志文件读取出来,显示在日志查询里,需要用到了IO流. 1. FileStream fs = File.OpenRead(url);StreamReader sr = new StreamReader((System.IO.Stream

巧用FileShare解决C#读写文件时文件正由另一进程使用的bug

在使用C#进行文件读写的时候,一旦对文件操作频繁,总会碰到一些令人措手不及的意外.例如经常会碰到的一个问题: System.IO.IOException: 文件“XXX”正由另一进程使用,因此该进程无法访问此文件.这个问题是碰到最频繁的一个.其实可 以通过FileShare来完美解决这个问题,下面提供一个例子: /*filePath为传过来的文件路径,endcode为设置的文件编码方式*/ using (FileStream fs = new FileStream(filePath, FileM

运转hdf读写文件时呈现的过错

应该是root用户发动namenod时,root用户修正文件权限:<< chown hadoop121:hadoop121-R /home/hadoop121/hadoop-1.2.1/<<-R表明递归 <<切换到hadoop用户.root用户修正文件权限:<< chown hadoop121:hadoop121-R /home/hadoop121/hadoop-1.2.1/<<-R表明递归 <<切换到hadoop用户.更改了hado

Dom4j读写文件时的编码问题

1.Dom4j写文件时的编码问题 如上图代码所示,如果使用 writer = new XMLWriter(new FileWriter(new File(filepath)), xmlFormat); 下载的xml文件编码格式如下: 原因分析: 由于FileWriter默认的输出编码是ANSI编码,而Dom4j中的wirte方法提供的内容实际是以UTF-8保存的,因此会造成包括中文字符的XML文件无法正常阅读. 解决方法: 不能使用简单的FileWriter,而应该是使用一个能指定具体输出编码的

FileStram文件正由另一进程使用,该进程无法访问该文件,解决方法

异常提示: “文件正由另一进程使用,该进程无法访问该文件”. 打开一个文件后,尝试重新打开一次该文件,或者打开该文件后想对该文件进行其他操作的时候,就容易出现这个错误提示. 通常造成该错误的原因是构造System.IO.FileStream时参数设置有问题. 一般习惯直接使用: FileStream fs = new FileStream(fileName, FileMode.Open) 这个方法打开文件的时候是以只读共享的方式打开的,但若此文件已被一个拥有写权限的进程打开的话,就无法读取了,