如何在文本文件上讀取和寫入而不會出現「文件已被另一個應用程序使用」的異常?重複/同時讀取/寫入文本文件
我試過File.readalltext()和File.Appendalltext()函數..我剛開始用filestream。
哪種方法可以在我的方案中發揮最佳效果?我將不勝感激一些代碼snipplets太..
感謝
如何在文本文件上讀取和寫入而不會出現「文件已被另一個應用程序使用」的異常?重複/同時讀取/寫入文本文件
我試過File.readalltext()和File.Appendalltext()函數..我剛開始用filestream。
哪種方法可以在我的方案中發揮最佳效果?我將不勝感激一些代碼snipplets太..
感謝
這與打開文件時請求的鎖定和共享語義有關。
而不是使用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' – 2010-07-20 08:02:56
@Matt Ellen。更正 - 謝謝。 – 2010-07-20 08:20:45