hs2d
hs2d

Reputation: 6199

StreamReader and binary data

I have this text file what contains different fields. Some fields may contain binary data. I need to get all the data in the file but right now when using StreamReader then it wont read the binary data block and data what comes after that. What would be the best solution to solve this problem?

Example:

field1|field2|some binary data here|field3

Right now i read in the file like this:

public static string _fileToBuffer(string Filename)
{
    if (!File.Exists(Filename)) throw new ArgumentNullException(Filename, "Template file does not exist");

    StreamReader reader = new StreamReader(Filename, Encoding.Default, true);
    string fileBuffer = reader.ReadToEnd();
    reader.Close();

    return fileBuffer;
}

EDIT: I know the start and end positions of the binary fields.

Upvotes: 6

Views: 10635

Answers (2)

Jon Skeet
Jon Skeet

Reputation: 1503479

StreamReader isn't designed for binary data. It's designed for text data, which is why it extends TextReader. To read binary data, you should use a Stream, and not try to put the results into a string (which is, again, for text data).

In general, it's a bad idea to mix binary data and text data in a file like this - what happens if the binary data includes the | symbol for example? You might want to include the binary data in some text-encoded form, such as a base64 variant avoiding |.

Upvotes: 7

abatishchev
abatishchev

Reputation: 100358

use BinaryReader

Upvotes: 9

Related Questions