AppendText 仅适用于大字符串



所以我正在尝试将文件加载到富文本框中,但我遇到了一些问题。无论我使用什么方法,二进制阅读器,文件流,流阅读器,我总是遇到将文件加载到富文本框中的问题。(我不能使用 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 慢? 我应该使用读取块还是读取?

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

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

最新更新