繁体   English   中英

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

[英]Reading / Writing text file repeatedly / simultaneously

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

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

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

谢谢

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

而不是使用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及其构造函数重载,您可以准确地定制它的行为以适合您的目的。

您需要确保该文件未被任何其他应用程序使用。

使用您自己的应用程序,如果不在读取之间关闭流,则无法多次读取文件。

你需要找出原因的文件正在使用-就像一个工具的FileMon可以帮助找出。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM