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

Very slow StreamReader for medium sized files.

我正在将文本文件读入程序(它们是 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();
        }

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

所以,当我使用不同的 StreamReader 时,一切都开始非常顺利, using (StreamReader sr = new StreamReader(path, Encoding.Unicode)) 这个,让我得到格式正确的字符串,而不是 int 指示字符,这大大提高了速度。