对于中等大小的文件,StreamReader非常慢。

时间:2015-02-24 07:33:24

标签: c# optimization character-encoding streamreader

我正在将文本文件读入程序(它们是Unicode中的代码,输出必须是utf-8)。下面的代码适用于较小的代码(大约150行,其中行只有一个单词),但是当我在较大的文件(如20.000行,仍然只有一行的单词)上使用它时,程序需要半分钟完成任务。我应该编写新代码,还是有办法优化它?

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

2 个答案:

答案 0 :(得分:3)

使用StringBuilder而不是String:

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();

答案 1 :(得分:0)

因此,当我使用不同的StreamReader时,一切都开始顺利运行, using (StreamReader sr = new StreamReader(path, Encoding.Unicode)) 这个,让我得到正确的格式化字符串,而不是int指示字符,这已经提高了A LOT的速度。