如何在不出现“文件已被另一个应用程序使用”的异常的情况下读取和写入文本文件?
我尝试了 File.readalltext() 和 File.Appendalltext() 函数。我刚开始使用文件流。
哪个最适合我的情况?我也很感激一些代码片段..
谢谢
最佳答案
这都与您在打开文件时请求的锁定和共享语义有关。
不要使用 File.ReadAllText()
的快捷方式,尝试使用 System.IO.FileStream
和 System.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/