Skip to main content
.NET Framework Class Library
BinaryReader Class

Reads primitive data types as binary values in a specific encoding.

Inheritance Hierarchy
SystemObject
  System.IOBinaryReader

Namespace:   System.IO
Assembly:  mscorlib (in mscorlib.dll)
Syntax
<[%$TOPIC/a4b8basy_en-us_VS_110_2_0_0_0_0%](True)> _
Public Class BinaryReader _
	Implements [%$TOPIC/a4b8basy_en-us_VS_110_2_0_0_0_1%]
[[%$TOPIC/a4b8basy_en-us_VS_110_2_0_1_0_0%](true)]
public class BinaryReader : [%$TOPIC/a4b8basy_en-us_VS_110_2_0_1_0_1%]
[[%$TOPIC/a4b8basy_en-us_VS_110_2_0_2_0_0%](true)]
public ref class BinaryReader : [%$TOPIC/a4b8basy_en-us_VS_110_2_0_2_0_1%]
[<[%$TOPIC/a4b8basy_en-us_VS_110_2_0_3_0_0%](true)>]
type BinaryReader =  
    class 
        interface [%$TOPIC/a4b8basy_en-us_VS_110_2_0_3_0_1%] 
    end
public class BinaryReader implements [%$TOPIC/a4b8basy_en-us_VS_110_2_0_4_0_0%]

The BinaryReader type exposes the following members.

Constructors
  NameDescription
Public method Supported by the XNA Framework Supported by Portable Class Library BinaryReader(Stream)Initializes a new instance of the BinaryReader class based on the specified stream and using UTF-8 encoding.
Public method Supported by the XNA Framework Supported by Portable Class Library BinaryReader(Stream, Encoding)Initializes a new instance of the BinaryReader class based on the specified stream and character encoding.
Public method BinaryReader(Stream, Encoding, Boolean)Initializes a new instance of the BinaryReader class based on the specified stream and character encoding, and optionally leaves the stream open.
Top
Properties
  NameDescription
Public property Supported by the XNA Framework Supported by Portable Class Library BaseStreamExposes access to the underlying stream of the BinaryReader.
Top
Methods
  NameDescription
Public method Supported by the XNA Framework CloseCloses the current reader and the underlying stream.
Public method Supported by Portable Class Library DisposeReleases all resources used by the current instance of the BinaryReader class.
Protected method Supported by the XNA Framework Supported by Portable Class Library Dispose(Boolean)Releases the unmanaged resources used by the BinaryReader class and optionally releases the managed resources.
Public method Supported by the XNA Framework Supported by Portable Class Library Equals(Object)Determines whether the specified object is equal to the current object. (Inherited from Object.)
Protected method Supported by the XNA Framework Supported by Portable Class Library FillBufferFills the internal buffer with the specified number of bytes read from the stream.
Protected method Supported by the XNA Framework Supported by Portable Class Library FinalizeAllows an object to try to free resources and perform other cleanup operations before it is reclaimed by garbage collection. (Inherited from Object.)
Public method Supported by the XNA Framework Supported by Portable Class Library GetHashCodeServes as the default hash function. (Inherited from Object.)
Public method Supported by the XNA Framework Supported by Portable Class Library GetTypeGets the Type of the current instance. (Inherited from Object.)
Protected method Supported by the XNA Framework Supported by Portable Class Library MemberwiseCloneCreates a shallow copy of the current Object. (Inherited from Object.)
Public method Supported by the XNA Framework Supported by Portable Class Library PeekCharReturns the next available character and does not advance the byte or character position.
Public method Supported by the XNA Framework Supported by Portable Class Library ReadReads characters from the underlying stream and advances the current position of the stream in accordance with the Encoding used and the specific character being read from the stream.
Public method Supported by the XNA Framework Supported by Portable Class Library Read(Byte, Int32, Int32)Reads the specified number of bytes from the stream, starting from a specified point in the byte array.
Public method Supported by the XNA Framework Supported by Portable Class Library Read(Char, Int32, Int32)Reads the specified number of characters from the stream, starting from a specified point in the character array.
Protected method Supported by the XNA Framework Supported by Portable Class Library Read7BitEncodedIntReads in a 32-bit integer in compressed format.
Public method Supported by the XNA Framework Supported by Portable Class Library ReadBooleanReads a Boolean value from the current stream and advances the current position of the stream by one byte.
Public method Supported by the XNA Framework Supported by Portable Class Library ReadByteReads the next byte from the current stream and advances the current position of the stream by one byte.
Public method Supported by the XNA Framework Supported by Portable Class Library ReadBytesReads the specified number of bytes from the current stream into a byte array and advances the current position by that number of bytes.
Public method Supported by the XNA Framework Supported by Portable Class Library ReadCharReads the next character from the current stream and advances the current position of the stream in accordance with the Encoding used and the specific character being read from the stream.
Public method Supported by the XNA Framework Supported by Portable Class Library ReadCharsReads the specified number of characters from the current stream, returns the data in a character array, and advances the current position in accordance with the Encoding used and the specific character being read from the stream.
Public method Supported by the XNA Framework Supported by Portable Class Library ReadDecimalReads a decimal value from the current stream and advances the current position of the stream by sixteen bytes.
Public method Supported by the XNA Framework Supported by Portable Class Library ReadDoubleReads an 8-byte floating point value from the current stream and advances the current position of the stream by eight bytes.
Public method Supported by the XNA Framework Supported by Portable Class Library ReadInt16Reads a 2-byte signed integer from the current stream and advances the current position of the stream by two bytes.
Public method Supported by the XNA Framework Supported by Portable Class Library ReadInt32Reads a 4-byte signed integer from the current stream and advances the current position of the stream by four bytes.
Public method Supported by the XNA Framework Supported by Portable Class Library ReadInt64Reads an 8-byte signed integer from the current stream and advances the current position of the stream by eight bytes.
Public method Supported by the XNA Framework Supported by Portable Class Library ReadSByteReads a signed byte from this stream and advances the current position of the stream by one byte.
Public method Supported by the XNA Framework Supported by Portable Class Library ReadSingleReads a 4-byte floating point value from the current stream and advances the current position of the stream by four bytes.
Public method Supported by the XNA Framework Supported by Portable Class Library ReadStringReads a string from the current stream. The string is prefixed with the length, encoded as an integer seven bits at a time.
Public method Supported by the XNA Framework Supported by Portable Class Library ReadUInt16Reads a 2-byte unsigned integer from the current stream using little-endian encoding and advances the position of the stream by two bytes.
Public method Supported by the XNA Framework Supported by Portable Class Library ReadUInt32Reads a 4-byte unsigned integer from the current stream and advances the position of the stream by four bytes.
Public method Supported by the XNA Framework Supported by Portable Class Library ReadUInt64Reads an 8-byte unsigned integer from the current stream and advances the position of the stream by eight bytes.
Public method Supported by the XNA Framework Supported by Portable Class Library ToStringReturns a string that represents the current object. (Inherited from Object.)
Top
Explicit Interface Implementations
  NameDescription
Explicit interface implemetation Private method Supported by the XNA Framework IDisposableDisposeReleases all resources used by the BinaryReader.
Top
Remarks

The BinaryReader class provides methods that simplify reading primitive data types from a stream. For example, you can use the ReadBoolean method to read the next byte as a Boolean value and advance the current position in the stream by one byte. The class includes read methods that support different data types.

When you create a new instance of the BinaryReader class, you provide the stream to read from, and optionally specify the type of encoding and whether to leave the stream open after disposing the BinaryReader object. If you do not specify an encoding type, UTF-8 is used.

Important noteImportant

This type implements the IDisposable interface. When you have finished using the type, you should dispose of it either directly or indirectly. To dispose of the type directly, call its Dispose method in a try/catch block. To dispose of it indirectly, use a language construct such as using (in C#) or Using (in Visual Basic). For more information, see the “Using an Object that Implements IDisposable” section in the IDisposable interface topic.

Examples

The following code example demonstrates how to store and retrieve application settings in a file.

Imports System.IO

Module Module1
    Const fileName As String = "AppSettings.dat" 

    Sub Main()
        WriteDefaultValues()
        DisplayValues()
    End Sub 

    Sub WriteDefaultValues()
        Using writer As BinaryWriter = New BinaryWriter(File.Open(fileName, FileMode.Create))
            writer.Write(1.25F)
            writer.Write("c:\Temp")
            writer.Write(10)
            writer.Write(True)
        End Using 
    End Sub 

    Sub DisplayValues()
        Dim aspectRatio As Single 
        Dim tempDirectory As String 
        Dim autoSaveTime As Integer 
        Dim showStatusBar As Boolean 

        If (File.Exists(fileName)) Then 

            Using reader As BinaryReader = New BinaryReader(File.Open(fileName, FileMode.Open))
                aspectRatio = reader.ReadSingle()
                tempDirectory = reader.ReadString()
                autoSaveTime = reader.ReadInt32()
                showStatusBar = reader.ReadBoolean()
            End Using

            Console.WriteLine("Aspect ratio set to: " & aspectRatio)
            Console.WriteLine("Temp directory is: " & tempDirectory)
            Console.WriteLine("Auto save time set to: " & autoSaveTime)
            Console.WriteLine("Show status bar: " & showStatusBar)
        End If 
    End Sub 

End Module
using System;
using System.IO;

class ConsoleApplication
{
    const string fileName = "AppSettings.dat";

    static void Main()
    {
        WriteDefaultValues();
        DisplayValues();
    }

    public static void WriteDefaultValues()
    {
        using (BinaryWriter writer = new BinaryWriter(File.Open(fileName, FileMode.Create)))
        {
            writer.Write(1.250F);
            writer.Write(@"c:\Temp");
            writer.Write(10);
            writer.Write(true);
        }
    }

    public static void DisplayValues()
    {
        float aspectRatio;
        string tempDirectory;
        int autoSaveTime;
        bool showStatusBar;

        if (File.Exists(fileName))
        {
            using (BinaryReader reader = new BinaryReader(File.Open(fileName, FileMode.Open)))
            {
                aspectRatio = reader.ReadSingle();
                tempDirectory = reader.ReadString();
                autoSaveTime = reader.ReadInt32();
                showStatusBar = reader.ReadBoolean();
            }

            Console.WriteLine("Aspect ratio set to: " + aspectRatio);
            Console.WriteLine("Temp directory is: " + tempDirectory);
            Console.WriteLine("Auto save time set to: " + autoSaveTime);
            Console.WriteLine("Show status bar: " + showStatusBar);
        }
    }
}
Version Information

.NET Framework

Supported in: 4.6, 4.5, 4, 3.5, 3.0, 2.0, 1.1

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

XNA Framework

Supported in: 3.0, 2.0, 1.0

Portable Class Library

Supported in: Portable Class Library

Supported in: Windows Phone 8.1

Supported in: Windows Phone Silverlight 8.1

Supported in: Windows Phone Silverlight 8
Thread Safety
Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.