我試圖讀取一個大的文本文件(14MB),每行轉換成一個字符串列表,然後獲取不同的字符串,然後將其寫回到另一個文本文件,我使用以下代碼:streamWriter轉義一些行
static void removeDuplicates(string filename)
{
//Reading from the file
Console.WriteLine("Reading from the file....");
StreamReader sr = new StreamReader(filename);
List<string> namesList = new List<string>();
while (!sr.EndOfStream)
{
namesList.Add(sr.ReadLine());
}
//Getting the distinct list
namesList=namesList.Distinct().ToList<string>();
Console.WriteLine("Writing to the new file");
//writing back to the file
StreamWriter sw = new StreamWriter(filename + "_NoDuplicates",false);
for (int i = 0; i < namesList.Count; i++)
{
sw.Write(namesList[i] + "\r\n");
}
}
的問題是StreamWriter的總是停若干行之後寫,總是停止寫在同一個地方
我確信,在列表中的內容是正確的,並且環路經過列表中的所有項目,它只是streamWriter問題。
該列表包含Distinct()之前的1048577個項目和Distinct()之後的880829個項目;
streamWriter停止在字符串數字880805的中間寫入,並且在此之後不寫任何內容,它甚至停止在單詞的中間!
爲什麼會這樣,我做錯了什麼?
你應該關閉你寫的流 – thumbmunkeys 2012-04-16 00:50:19
@pivotnig耶,謝謝,這解決了這個問題......但我想知道爲什麼每次它停在相同的地方?究竟是什麼讓人開心? – SKandeel 2012-04-16 00:54:03