如何在文本文件上读写而不出现“文件已被另一个应用程序使用”的异常??
我试过 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/