2015-01-06 35 views
-1

目前我的代碼沒有插入額外的數據,而是覆蓋我的測試文件中的數據。如何使用StringBuilder回寫一個文本文件?

代碼片段如下:

string path = @"C:\\test.txt"; // <==NEW 
StreamWriter sw = new StreamWriter(new FileStream(path, Filemode.Open, FileAccess.Write)); // <==NEW 
StringBuilder Editions = new StringBuilder(400); 



Editions.Insert(0, "0"); 
Editions.Insert(1, "0"); 
//Editions.Remove(9, 14); 
//Editions.Insert(11, "R"); 
//Editions.Insert(12, "M"); 
//Editions.Insert(13, "A"); 
//Editions.Insert(14, "L"); 
//Editions.Insert(15, "L"); 
//Editions.Insert(16, " "); 
//Editions.Insert(17, " "); 
//Editions.Insert(18, " "); 
//Editions.Insert(193, "C"); 
//Editions.Insert(194, "L"); 
sw.Write(Editions.ToString()); // <== NEW 
sw.Flush(); // <== NEW 
sw.Close(); // <== NEW 
+0

你需要打開Append的文件:) –

+0

好吧,我該怎麼做呢? 因爲使用FileMode.Append會將我的編輯添加到文件的末尾,而不是實際需要放置的位置。 – LanSlyde

+0

Filemode.Open - > Filemode.Append :)請參閱我的回答 –

回答

1

如果您需要添加更多的數據,你需要打開你的文件中Append模式

@"C:\\test.txt"; // <==NEW 
StreamWriter sw = new StreamWriter(new FileStream(path, Filemode.Append, FileAccess.Write)); // <==NEW 
StringBuilder Editions = new StringBuilder(400); 


Editions.Insert(0, "0"); 
Editions.Insert(1, "0"); 
//Editions.Remove(9, 14); 
//Editions.Insert(11, "R"); 
//Editions.Insert(12, "M"); 
//Editions.Insert(13, "A"); 
//Editions.Insert(14, "L"); 
//Editions.Insert(15, "L"); 
//Editions.Insert(16, " "); 
//Editions.Insert(17, " "); 
//Editions.Insert(18, " "); 
//Editions.Insert(193, "C"); 
//Editions.Insert(194, "L"); 
sw.Write(Editions.ToString()); // <== NEW 
sw.Flush(); // <== NEW 
sw.Close(); // <== NEW 

更多信息 - here

從MSDN報價:追加

打開文件,如果它存在並尋求到文件的末尾,或者 創建一個新文件。這需要FileIOPermissionAccess.Append 權限。 FileMode.Append只能與 FileAccess.Write一起使用。在 文件結束之前嘗試尋找位置會引發IOException異常,並且任何嘗試讀取的操作都會失敗 並引發NotSupportedException異常。

此外 - 當您使用插入時要小心「ArgumentOutOfRangeException」。 READ

+0

FileMode.Append會將我的編輯添加到文件的末尾,而不是放在需要放置的位置。 – LanSlyde

+1

IMO你的問題需要進一步改善:) –

相關問題