文件“D:\log.txt”正由另一进程使用,因此该进程无法访问该文件。
log.txt是一个日志文件,不定时都可能由另外的程序对它进行日志记录写入操作。
今需要对日志文件读取出来,显示在日志查询里,需要用到了IO流。
1、 FileStream fs = File.OpenRead(url);
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”正由另一进程使用,因此该进程无法访问该文件。
3、 FileStream fs = new FileStream(url, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
StreamReader sr = new StreamReader(fs, System.Text.Encoding.Default);
正确读取。
这样的情况,不单要与只读方式打开txt文件,而且,需要共享锁。还必须要选择flieShare方式为ReadWrite。因为随时有其他程序对其进行写操作。
原文链接
https://blog.csdn.net/superhoy/article/details/7931234
c# 读写文件时文件正由另一进程使用,因此该进程无法访问该文件问题描述:c# 读写文件时文件正由另一进程使用,因此该进程无法访问该文件,在IO处理上遇到了无法操作的问题。文件“D:\log.txt”正由另一进程使用,因此该进程无法访问该文件。log.txt是一个日志文件,不定时都可能由另外的程序对它进行日志记录写入操作。今需要对日志文件读取出来,显示在日志查询里,需要用到了IO流。1、 FileStream fs = File.OpenRead(url);StreamReader sr = ne
这是由于程序要读取的
文件
已经被其他
进程
(人为或其它程序)打开,若仅需要读取,则可以设置
文件
共享方式为
读写
的,FileShare.ReadWrite,如下方式:
System.IO.FileStream fs = new System.IO.FileStream(fileName,
System.IO.FileMode.Open,System.IO.FileAccess.Read,FileShare.ReadWrite);
注意:System.IO.FileMode.Open,System.IO.FileAc
C#
中经常会
使用
到OpenFileDialog控件,而
使用
该控件
时
若没有将条件设置好,很容易出现以下提示:
“
文件
正由
另一
进程
使用
,该
进程
无法访问
该
文件
”。
打开一个
文件
后,尝试重新打开一次该
文件
,或者打开该
文件
后想对该
文件
进行其他操作的
时
候,就容易出现这个错误提示,错误的原因很简单,解决方法也很简单。
一般情况下造成该错误的原因是构造System.IO.FileStream
时
参数设
1.调用了窗口的 hide() 方法,导致某些窗口(尤其是登录页面)被隐藏,导致关闭的
时
候,这个
进程
在最下面的任务栏里面并不显示出来,而且在任务管理器里面也不显示。(但实际上是
进程
存在并且没有被关闭,只是隐藏起来了),结果这样就莫名进入了调试状态。
2.自己采用的调试状态运行程序,导致不能修改代码,尽管调试状态下可以修改代码(工具--->选项--->调试,把对号去
开发过程中,我们往往需要大量与
文件
交互,读
文件
,写
文件
已成家常便饭,本地运行完美,但一上到投产环境,往往会出现很多令人措手不及的意外,或开发中的烦恼,因此,我对普通的
C#
文件
操作做了一次总结,问题大部分如下:
1:写入一些内容到某个
文件
中,在另一个
进程
/线程/后续操作中要读取
文件
内容的
时
候报异常,提示 System.IO.IOException:
文件
“XXX”
正由
另一
进程
使用
,因此该
进程
无法访问
此
文件
。
2:在对一个
文件
进行一些操作后(读/写),随后想追加依然报System.IO.IOException:
文件
“XXX”
正由
另一
进程
使用
,因此该
进程
无法访问
此
文件
。次问题与1相似。
3:对一个
在开发程序的过程中,难免少不了写入错误日志这个关键功能。实现这个功能,可以选择
使用
第三方日志插件,也可以选择
使用
数据库,还可以自己写个简单的方法把错误信息记录到日志
文件
。
选择最后一种方法实现的
时
候,若对
文件
操作与线程同步不熟悉,问题就有可能出现了,因为同一个
文件
并不允许多个线程同
时
写入,否则会提示“
文件
正在由另一
进程
使用
,因此该
进程
无法访问
此
文件
”。
这是
文件
的并发写入问题,就需要用到线程同步。...
1.将
文件
流变为共享:
FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
StreamReader sr = new StreamReader(
在
C#
中,你可以
使用
FileStream类打开一个共享访问的流,以便其他
进程
也可以访问该
文件
。你可以指定FileShare枚举以允许其他
进程
以只读或
读写
模式访问该
文件
。
以下是一个写入共享
文件
的示例代码:
```csharp
using System;
using System.IO;
using System.Text;
class Program
static void Main(string[] args)
string filePath = "C:\\temp\\myfile.txt";
string data = "Hello, World!";
byte[] bytes = Encoding.UTF8.GetBytes(data);
using (FileStream fileStream = new FileStream(filePath, FileMode.Append, FileAccess.Write, FileShare.ReadWrite))
fileStream.Write(bytes, 0, bytes.Length);
catch (Exception e)
Console.WriteLine("An error occurred: " + e.Message);
在上面的示例代码中,我们
使用
了FileStream类打开了一个名为"myfile.txt"的
文件
,并指定了FileShare.ReadWrite枚举以允许其他
进程
以只读或
读写
模式访问该
文件
。然后,我们
使用
Write方法将数据写入到
文件
中。
需要注意的是,如果其他
进程
正在读取或写入该
文件
,你可能无法立即访问该
文件
。此外,如果你尝试在打开
文件
的过程中删除该
文件
,将会抛出一个IOException异常。因此,你应该始终在写入
文件
之前检查
文件
是否存在,并且在写入完成后关闭
文件
流。