我如何在读写文本文件时避免出现“文件已被其他应用程序使用”的异常?
我尝试了File.readalltext()和File.Appendalltext()函数。我刚开始使用filestream。
在我的情况下,哪个函数最好用?我也希望能得到一些代码片段。
谢谢
我如何在读写文本文件时避免出现“文件已被其他应用程序使用”的异常?
我尝试了File.readalltext()和File.Appendalltext()函数。我刚开始使用filestream。
在我的情况下,哪个函数最好用?我也希望能得到一些代码片段。
谢谢
这与打开文件时请求的锁定和共享语义有关。
不要使用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
以及其构造函数重载,您可以根据需要精确地调整它的行为。
FileShare.Read
,而不是FileShare.Write
。 - Matt Ellen