2010-03-23 51 views
2

我想同時讀寫數據到文件中。我可以只使用StreamReader和StreamWriter文件嗎?爲什麼下面的代碼不會出數字?同時讀寫數據到文件中

var stream = new FileStream(path,FileMode.Create,FileAccess.ReadWrite,FileShare.ReadWrite); 
var sw = new StreamWriter(stream); 
var sr = new StreamReader(stream); 


for(int i=0;i<10;i++) 
{ 
    sw.WriteLine(i); 
} 

stream.Seek(0,SeekOrigin.Begin); 
for(int i=0;i<10;i++) 
{ 
Console.WriteLine(sr.ReadLine()); 
} 

stream.Close(); 
+1

您應該在'using'語句中關閉您的流。 – SLaks

+1

這裏要非常小心。使用操作系統的讀/寫共享功能在給定文件上擁有兩個打開的FileStream是一回事。讓StreamReader和StreamWriter訪問同一個FileStream實例是完全不同的事情。如果嘗試隔行掃描讀寫順序,StreamReader和StreamWriter中的內部緩衝可能會給您帶來意想不到的結果。 – Josh

回答

2

您需要Flush的StreamWriter的迫使它實際上是從它的內部緩衝器的流寫入的數據。
或者,您可以將StreamWriter的AutoFlush屬性設置爲true