c# - 重复/同时读取/写入文本文件

标签 c# file-io filestream

如何在不出现“文件已被另一个应用程序使用”的异常的情况下读取和写入文本文件?

我尝试了 File.readalltext() 和 File.Appendalltext() 函数。我刚开始使用文件流。

哪个最适合我的情况?我也很感激一些代码片段..

谢谢

最佳答案

这都与您在打开文件时请求的锁定和共享语义有关。

不要使用 File.ReadAllText() 的快捷方式,尝试使用 System.IO.FileStreamSystem.IO.StreamReader /System.IO.StreamWriter

打开一个文件:

using (var fileStream = new FileStream(@"c:\myFile", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
using (var streamReader = new StreamReader(fileStream))
{
  var someText = streamReader.ReadToEnd();
}

注意 FileShare.ReadWrite - 这是告诉流允许共享给其他读者或其他作者。

对于写作尝试类似的东西

using (var fileStream = new FileStream(@"c:\myFile", FileMode.Create, FileAccess.Write, FileShare.Read))
using (var streamWriter = new StreamWriter(fileStream))
{
  streamWriter.WriteLine("some text");
}

注意 FileShare.Read - 这是告诉流只允许共享给读者。

阅读 System.IO.FileStream 及其构造函数重载,您可以根据您的目的准确调整它的行为方式。

关于c# - 重复/同时读取/写入文本文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3287852/

相关文章:

c++ - 在内存中二进制搜索与。基于磁盘的二进制搜索

c# - "Transparent"Windows 窗体在 DirectDraw Video Surface 前面时闪烁

c# - 对分数和带分数列表进行排序

检查文件是否可以使用可移植 C 打开

c - 从整数列表输入中消除逗号

node.js - 如何发送 readstream 作为响应

c++ - 为什么 ostringstream 比 ofstream 快

c# - 使用 ephtmltopdf 将 html 转换为 pdf

c# - WPF 中的 Windows 图标属性,需要标记扩展吗?

c# - ListView.Refresh 'clears' ListView