问题描述

A程序不断的将日志信息追加到日志文件的末尾,B程序不断的从日志文件中读取最后一行(使用File.ReadLines(string path)方法)。
在B程序读取的同时A程序执行写入,报出如下错误信息:

System.IO.IOException: 文件“xxx”正由另一进程使用,因此该进程无法访问此文件。

解决方法

因为需要按行读取数据,所以采用File.ReadLines(string path)方法,但该方法在读取时会锁住文件不让A程序继续写入。若不想禁止对文件的写入,应使用如下参数创建文件流:

new FileStream(fileName, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);

如此以来,改写一个ReadLines方法就好:

public static IEnumerable<string> ReadLines(string path,Encoding encode = null)
{using (var fs = new FileStream(path, FileMode.Open, FileAccess.Read, FileShare.ReadWrite, 0x1000, FileOptions.SequentialScan))using (var sr = new StreamReader(fs, encode ?? Encoding.UTF8)){string line;while ((line = sr.ReadLine()) != null){yield return line;}}
}

推荐资料

FileShare枚举的使用(文件读写锁) :https://www.cnblogs.com/jhxk/articles/2628235.html
作者对FileModeFileAccessFileShare三个枚举的使用做了详尽的测试,推荐阅读。

C# 读写文件时抛出异常“System.IO.IOException: 文件“xxx”正由另一进程使用,因此该进程”相关推荐

  1. 使用MyBatis时出现java.io.IOException: Could not find resource com/ee/mybatis/mapper/Usermapper.xml 类似的错误

    使用MyBatis时出现java.io.IOException: Could not find resource com/ee/mybatis/mapper/Usermapper.xml 类似的错误的 ...

  2. C# System.IO.IOException HResult=0x8007000D Message=数据无效。解决办法

    C# System.IO.IOException HResult=0x8007000D Message=数据无效.解决办法 HResult=0x8007000D Message=数据无效.解决办法) ...

  3. 在HttpClient请求的时候,返回结果解析时出现java.io.IOException: Attempted read from closed stream. 异常,解决

    在HttpClient请求的时候,返回结果解析时出现java.io.IOException: Attempted read from closed stream. 异常,解决 参考文章: (1)在Ht ...

  4. fiddler 抓包 System.IO.IOException 由于意外的数据包格式,握手失败

    抓安卓模拟器包 1.打开https捕捉, 信任根证书 2.证书手动安装, 基本上就是点下一步, 然后完事了 3.调整连接(这样只有连上这个端口的请求才会捕获)  如: 本机ip地址:8899  模拟器 ...

  5. 关于碰到优盘插入电脑检测到病毒并且优盘里文件只显示System Volume Information文件夹的问题解决。

    关于碰到优盘插入电脑检测到病毒并且优盘里文件只显示System Volume Information文件夹的问题解决. 我曾经也碰到过优盘没怎么用过,去了一趟打印店,之后突然发现插到电脑上,电脑检测到 ...

  6. hdfs dfs -put_通过HDFS中的`hdfs dfs -put`命令行上传文件时,如何设置一个文件的复制因子?...

    hdfs dfs -put When uploading a file by the hdfs dfs -put command line in HDFS, how to set a replicat ...

  7. Linux1T大文件拷贝,U盘拷贝大于4G的iso文件时提示对于目标文件系统 文件过大解决方法全集...

    [文章导读] U盘在我们日常使用过程中已经在广泛的使用了,很多人都喜欢拷贝文件,u盘传输速度上的是非常快的,但是有不少用户在使用U盘过程中遇到问题,u盘不能拷贝超过4G的大文件,提示" U盘 ...

  8. python打开文件时,找不到文件 FileNotFoundError: [Errno 2] No such file or directory报错

    小白一枚,记录学习错误,共同进步 python打开文件时,找不到文件 FileNotFoundError: [Errno 2] No such file or directory报错 UnicodeD ...

  9. java urlconn 下载慢_使用HttpURLConnection下载文件时出现 java.io.FileNotFoundException彻底解决办法...

    import java.io.File; import java.io.IOException; import java.io.InputStream; import java.io.RandomAc ...

最新文章

  1. 协作是企业管理的重点和难点
  2. 牛客练习赛81 小Q与彼岸花 (分块+可持久化01trie)
  3. (42)驱动中使用全局变量
  4. 【Python-pywt】 小波变化库—Pywavelets 学习笔记
  5. python算法题_python基本算法题(一)
  6. Apollo进阶课程 ⑥ | 高精地图与自动驾驶的关系
  7. 学习Spring Boot:(二十六)使用 RabbitMQ 消息队列
  8. 机器学习与计算机视觉(开篇)
  9. vpa函数python_Biopython序列比对
  10. 韩立刚计算机网络——第五章:传输层
  11. linux进入终端tty3,Linux中终端界面与图形界面之间的切换关系
  12. 用Python绘制标准时钟
  13. 金山词霸不断的弹出窗口(金山词霸防欺诈提示),犹如病毒软件
  14. Python高级-前端-01-HTML和CSS
  15. The DiskSpace quota of /five is exceeded: quota = 4096 B = 4 KB but diskspace consumed = 402653184
  16. Python3批量下载网易云音乐热歌榜
  17. 嵌入式设备的机器码、cpu的id号以及网卡mac地址
  18. [leetcode]Majority Element II
  19. RecyclerView的全能适配器,带有header和bottom
  20. 微信小程序开发实战 ②①(网路请求Promise化)

热门文章

  1. Flink 系例 之 Connectors 连接 Kafka
  2. python中print语句添加“f“的用处
  3. 一文掌握 Go 文件的读取操作
  4. 想跳槽涨薪的必看!Java开发了解这些自然无惧面试,附面试题
  5. 国内几大量化交易策略
  6. 程序员装逼指南(2022年版本)
  7. w10怎样关闭对计算机更改,w10电脑如何彻底关闭操作中心|w10关闭操作中的方法...
  8. IDEA如何打包war包
  9. JavaScript轮播图(面向对象)
  10. ubuntu新建用户之后只显示$解决办法