I want to read a file into a RichTextBox without using LoadFile (I might want to display the progress). The file contains only ASCII characters.

I was thinking of reading the file in chunks.

I have done the following (which is working):

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

```

My concern is:

```
string text = Encoding.ASCII.GetString(buf);

```

I have seen that it is not possible to add a `byte[]` to a RichTextBox.

My questions are:

* Will a new string object be allocated for every chunk which is read?
* Isn't there a better way not to have to create a string object just for appending the text to the RichTextBox?
* Or, is it more efficient to read lines from the file (StreamReader.ReadLine) and just add to the RichTextBox the string returned?