This class allows you to read data from a Stream. When using a BinaryReader, the data represented by a Stream is regarded as a binary format, and bits are merely read from the stream and copied into the appropriate types. The methods prefixed with Read() allow you to grab data of a specific type from the front of the Stream and advance the current position. The next table shows how many bytes each of these methods reads in from a stream.

MethodBytes read
Read variable
ReadBoolean 1
ReadByte 1
ReadBytes variable
ReadChar 2
ReadChars variable
ReadDecimal 16
ReadDouble 8
ReadInt16 2
ReadInt32 4
ReadInt64 8
ReadSByte 1
ReadSingle 4
ReadString variable
ReadUInt16 2
ReadUInt32 4
ReadUInt64 8

ReadString() uses the current encoding of the BinaryReader , which can be set when you call the constructor. Strings are prefixed with their length. PeekChar() allows you to look at the first character of a stream (a System.Char, which is two bytes) without advancing the position of the Stream. Because a binary reader may hold on to resources that should be freed when not needed, the BinaryReader must be closed using Close() or by wrapping it in a using block (which calls the protected Dispose() method to do the cleanup at the end of the using block).

public class BinaryReader : IDisposable {
// Public Constructors
   public method BinaryReader(Stream input);  
   public method BinaryReader(Stream input, 
        System.Text.Encoding encoding);  
// Public Instance Properties ...

Get C# in a Nutshell now with O’Reilly online learning.

O’Reilly members experience live online training, plus books, videos, and digital content from 200+ publishers.