我想在不使用 LoadFile 的情况下将文件读入 RichTextBox(我可能想显示进度)。该文件仅包含 ASCII 字符。
我正在考虑分块读取文件。
我已经完成了以下操作(正在工作):
const int READ_BUFFER_SIZE = 4 * 1024;
BinaryReader reader = new BinaryReader(File.Open("file.txt", FileMode.Open));
byte[] buf = new byte[READ_BUFFER_SIZE];
do {
int ret = reader.Read(buf, 0, READ_BUFFER_SIZE);
if (ret <= 0) {
break;
}
string text = Encoding.ASCII.GetString(buf);
richTextBox.AppendText(text);
} while (true);
我担心的是:
string text = Encoding.ASCII.GetString(buf);
我已经看到不可能将 a 添加byte[]
到 RichTextBox。
我的问题是:
是否会为每个读取的块分配一个新的字符串对象?
难道没有更好的方法不必为了将文本附加到 RichTextBox 而创建一个字符串对象吗?
或者,从文件 (StreamReader.ReadLine) 中读取行并将返回的字符串添加到 RichTextBox 是否更有效?