重复/同时读/写文本文件

Jos*_*osh 3 c# file-io filestream

如何读取和写入文本文件而不会得到"文件已被其他应用程序使用"的异常?

我尝试了File.readalltext()和File.Appendalltext()函数.我刚开始使用filestream.

在我的场景中哪种效果最好?我也会感谢一些代码snipplets ..

谢谢

Rob*_*ine 6

这与打开文件时请求的锁定和共享语义有关.

而不是使用快捷方法File.ReadAllText(),尝试使用a 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();
}
Run Code Online (Sandbox Code Playgroud)

请注意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");
}
Run Code Online (Sandbox Code Playgroud)

请注意FileShare.Read- 这告诉流只允许向读者共享.

阅读System.IO.FileStream它的构造函数和它的构造函数重载,你可以准确地定制它的行为以适应你的目的.