請參閱我在示例代碼的註釋問題:C#中的流式讀寫器如何工作?
var fileStream = file.OpenStreamForReadAsync(); // [1]: Is the file stored in memory
// when opened as stream?
var reader = new StreamReader(fileStream);
string line;
while(!reader.EndOfStream)
{
line = await reader.ReadLineAsync(); // [2]: If answer of [1] is "no", how the reader
// works when reading a line, does it read from
// disk everytime?
...
}
而且同樣的問題對於一個StreamWriter,寫一行時,它直接寫入磁盤,或暫時記憶?
我不明白你在問關於Stream Reader的問題。 – EJoshuaS
你永遠不會直接寫入文件,始終寫入內存。但是這是操作系統提供的抽象,它使文件寫入非常有效。數據在後臺懶洋洋地寫入磁盤。你的程序不知道這是實際發生的事情。針對UWP,這些寫入實際上不會寫入您打開的文件。直到你關閉流。這可以防止您因程序崩潰或磁盤空間不足而意外毀壞文件。你的程序不知道這是實際發生的事情。這個信息不會讓你有任何不同的代碼。 –
[StreamReader.Read()]上的[MSDN頁面(https://msdn.microsoft.com/en-us/library/ath1fht8(v = vs.110).aspx#Anchor_2)提到了一個緩衝區,所以我猜測它隨着時間而緩衝。 –