2015-02-24 53 views
0

我正在將文本文件讀入程序(它們是Unicode中的代碼,輸出必須是utf-8)。下面的代碼適用於較小的代碼(約150行,其中行只有一個字),但是當我在較大的文件上使用它時(例如20.000行,仍然只有一行代碼),程序需要半分鐘完成任務。我應該寫新的代碼,還是有一種方法來優化?非常慢的StreamReader用於中等大小的文件。

int next; 
string storage = ""; 
using (StreamReader sr = new StreamReader(path)) 
     { 
      while((next = sr.Read()) != -1) 
      { 
       storage += Char.ConvertFromUtf32(next); 
      } 
      sr.Close(); 
     } 
+0

是:StreamReader.ReadToEnd()。請參閱https://msdn.microsoft.com/en-us/library/system.io.streamreader.readtoend(v=vs.110).aspx – 2015-02-24 07:37:26

+0

我使用新的sr(path,Encoding.Unicode),然後收到不僅僅是int通過99999999提高了複雜度。感謝球員們的答案,請關閉這個線程。 – Offa 2015-02-24 07:43:24

+0

使用Filehelpers.net http://filehelpers.sourceforge.net/ – Amit 2015-02-24 07:54:23

回答

3

使用StringBuilder而不是字符串:

int next; 
StringBuilder storage = new StringBuilder(); 
using (StreamReader sr = new StreamReader(path)) { 
    while ((next = sr.Read()) != -1) { 
     storage.Append(Char.ConvertFromUtf32(next)); 
    } 
    sr.Close(); 
} 
string result = storage.ToString(); 
0

所以,一切都開始真正順利,當我用不同的StreamReader工作, using (StreamReader sr = new StreamReader(path, Encoding.Unicode)) 這一點,讓我得到正確格式化字符串,而不是int,指示字符,這提高了A LOT的速度。

相關問題