0 out of 1 rated this helpful - Rate this topic

BinaryReader Class

[This documentation is for preview only, and is subject to change in later releases. Blank topics are included as placeholders.]

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

System.Object
  System.IO.BinaryReader

Namespace:  System.IO
Assembly:  mscorlib (in mscorlib.dll)
[ComVisibleAttribute(true)]
public class BinaryReader : IDisposable

The BinaryReader type exposes the following members.

  Name Description
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
  Name Description
Public property Supported by the XNA Framework Supported by Portable Class Library BaseStream Exposes access to the underlying stream of the BinaryReader.
Top
  Name Description
Public method Supported by the XNA Framework Close Closes the current reader and the underlying stream.
Public method Supported by Portable Class Library Dispose() Releases 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 FillBuffer Fills 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 Finalize Allows 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 GetHashCode Serves as a hash function for a particular type. (Inherited from Object.)
Public method Supported by the XNA Framework Supported by Portable Class Library GetType Gets the Type of the current instance. (Inherited from Object.)
Protected method Supported by the XNA Framework Supported by Portable Class Library MemberwiseClone Creates a shallow copy of the current Object. (Inherited from Object.)
Public method Supported by the XNA Framework Supported by Portable Class Library PeekChar Returns 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 Read() Reads 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 Read7BitEncodedInt Reads in a 32-bit integer in compressed format.
Public method Supported by the XNA Framework Supported by Portable Class Library ReadBoolean Reads 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 ReadByte Reads 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 ReadBytes Reads 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 ReadChar Reads 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 ReadChars Reads 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 ReadDecimal Reads 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 ReadDouble Reads 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 ReadInt16 Reads 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 ReadInt32 Reads 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 ReadInt64 Reads 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 ReadSByte Reads 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 ReadSingle Reads 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 ReadString Reads 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 ReadUInt16 Reads 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 ReadUInt32 Reads 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 ReadUInt64 Reads 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 ToString Returns a string that represents the current object. (Inherited from Object.)
Top
  Name Description
Explicit interface implemetation Private method Supported by the XNA Framework IDisposable.Dispose Releases all resources used by the BinaryReader.
Top

For a list of common I/O tasks, see Common I/O Tasks.

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


using System;
using System.IO;
using System.Security.Permissions;

// Store and retrieve application settings.
class AppSettings
{
    const string fileName = "AppSettings#@@#.dat";
    float  aspectRatio;
    string lookupDir;
    int    autoSaveTime;
    bool   showStatusBar;

    public AppSettings()
    {
        // Create default application settings.
        aspectRatio   = 1.3333F;
        lookupDir     = @"C:\AppDirectory";
        autoSaveTime  = 30;
        showStatusBar = false;

        if(File.Exists(fileName))
        {
            BinaryReader binReader =
                new BinaryReader(File.Open(fileName, FileMode.Open));
            try
            {
                // If the file is not empty,
                // read the application settings.
                // First read 4 bytes into a buffer to
                // determine if the file is empty.
                byte[] testArray = new byte[3];
                int count = binReader.Read(testArray, 0, 3);

                if (count != 0)
                {
                    // Reset the position in the stream to zero.
                    binReader.BaseStream.Seek(0, SeekOrigin.Begin);

                    aspectRatio   = binReader.ReadSingle();
                    lookupDir     = binReader.ReadString();
                    autoSaveTime  = binReader.ReadInt32();
                    showStatusBar = binReader.ReadBoolean();
                }
            }

            // If the end of the stream is reached before reading
            // the four data values, ignore the error and use the
            // default settings for the remaining values.
            catch(EndOfStreamException e)
            {
                Console.WriteLine("{0} caught and ignored. " +
                    "Using default values.", e.GetType().Name);
            }
            finally
            {
                binReader.Close();
            }
        }

    }

    // Create a file and store the application settings.
    public void Close()
    {
        using(BinaryWriter binWriter =
            new BinaryWriter(File.Open(fileName, FileMode.Create)))
        {
            binWriter.Write(aspectRatio);
            binWriter.Write(lookupDir);
            binWriter.Write(autoSaveTime);
            binWriter.Write(showStatusBar);
        }
    }

    public float AspectRatio
    {
        get{ return aspectRatio; }
        set{ aspectRatio = value; }
    }

    public string LookupDir
    {
        get{ return lookupDir; }
        set{ lookupDir = value; }
    }

    public int AutoSaveTime
    {
        get{ return autoSaveTime; }
        set{ autoSaveTime = value; }
    }

    public bool ShowStatusBar
    {
        get{ return showStatusBar; }
        set{ showStatusBar = value; }
    }
}

class Test
{
    static void Main()
    {
        // Load application settings.
        AppSettings appSettings = new AppSettings();
        Console.WriteLine("App settings:\nAspect Ratio: {0}, " +
            "Lookup directory: {1},\nAuto save time: {2} minutes, " +
            "Show status bar: {3}\n",
            new Object[4]{appSettings.AspectRatio.ToString(),
            appSettings.LookupDir, appSettings.AutoSaveTime.ToString(),
            appSettings.ShowStatusBar.ToString()});

        // Change the settings.
        appSettings.AspectRatio   = 1.250F;
        appSettings.LookupDir     = @"C:\Temp";
        appSettings.AutoSaveTime  = 10;
        appSettings.ShowStatusBar = true;

        // Save the new settings.
        appSettings.Close();
    }
}


.NET Framework

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

.NET Framework Client Profile

Supported in: 4, 3.5 SP1

Portable Class Library

Supported in: Portable Class Library

Windows 8 Consumer Preview, Windows Server 8 Beta, Windows 7, Windows Server 2008 SP2, Windows Server 2008 R2 (Server Core Role supported with SP1 or later; Itanium not supported)

The .NET Framework does not support all versions of every platform. For a list of the supported versions, see .NET Framework System Requirements.

Any public static (Shared in Visual Basic) members of this type are thread safe. Any instance members are not guaranteed to be thread safe.
Did you find this helpful?
(1500 characters remaining)