AppendText仅适用于大字符串

时间:2019-12-30 05:00:13

标签: c# .net winforms append richtextbox

所以我试图将文件加载到Richtextbox中,但是遇到了一些问题。无论我使用哪种方法,binaryreader,filestream,streamreader,我总是遇到将文件分块加载到Richtextbox中的问题。 (我不能使用LoadFile,因为它不允许我指定编码)。似乎如果缓冲区大小太小,小于3MB,AppendText有时会添加一些额外的空行。文件本身不会丢失任何数据,仅附加了几行。这是我正在使用的代码:

richTextBox.Clear();
            progressBar.Value = 0;
            const int bufferSize = 1024 * 1024 * 3; //I've tried smaller buffers but they ALL seem to append a few extra lines (empty lines)

            using (StreamReader streamReader = new StreamReader(path))
            {
                while (streamReader.Peek() != -1)
                {
                    char[] buffer = new char[bufferSize];
                    await streamReader.ReadBlockAsync(buffer, 0, bufferSize);
                    richTextBox.AppendText(new string(buffer));
                    progressBar.Value = (int)(((double)streamReader.BaseStream.Position) / streamReader.BaseStream.Length * 100);
                }
            }

此代码似乎可以正常工作,但是我很偏执,根据情况的不同,它有时可能还会追加额外的行。有人知道为什么会这样吗?

*其他问题 使用StreamReader是否比FileStream或binaryreader慢? 我应该使用readblock还是read?

1 个答案:

答案 0 :(得分:0)

这是您可以使用的简单方法;它提供的格式与文件中的格式相同:

OpenFileDialog fil = new OpenFileDialog();
if (fil.ShowDialog()== DialogResult.OK)
{
    richTextBox1.Clear();
    richTextBox1.Text = File.ReadAllText(fil.FileName);                
}