BinaryReader 类 
定义
重要
一些信息与预发行产品相关,相应产品在发行之前可能会进行重大修改。 对于此处提供的信息,Microsoft 不作任何明示或暗示的担保。
用特定的编码将基元数据类型读作二进制值。
public ref class BinaryReader : IDisposable
	public class BinaryReader : IDisposable
	[System.Runtime.InteropServices.ComVisible(true)]
public class BinaryReader : IDisposable
	type BinaryReader = class
    interface IDisposable
	[<System.Runtime.InteropServices.ComVisible(true)>]
type BinaryReader = class
    interface IDisposable
	Public Class BinaryReader
Implements IDisposable
		- 继承
 - 
				BinaryReader
 
- 属性
 
- 实现
 
示例
下面的代码示例演示如何在文件中存储和检索应用程序设置。
using System;
using System.IO;
using System.Text;
class ConsoleApplication
{
    const string fileName = "AppSettings.dat";
    static void Main()
    {
        WriteDefaultValues();
        DisplayValues();
    }
    public static void WriteDefaultValues()
    {
        using (var stream = File.Open(fileName, FileMode.Create))
        {
            using (var writer = new BinaryWriter(stream, Encoding.UTF8, false))
            {
                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 (var stream = File.Open(fileName, FileMode.Open))
            {
                using (var reader = new BinaryReader(stream, Encoding.UTF8, false))
                {
                    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);
        }
    }
}
open System.IO
open System.Text
let fileName = "AppSettings.dat"
let writeDefaultValues () =
    use stream = File.Open(fileName, FileMode.Create)
    use writer = new BinaryWriter(stream, Encoding.UTF8, false)
    writer.Write 1.250F
    writer.Write @"c:\Temp"
    writer.Write 10
    writer.Write true
let displayValues () =
    if File.Exists fileName then
        use stream = File.Open(fileName, FileMode.Open)
        use reader = new BinaryReader(stream, Encoding.UTF8, false)
        let aspectRatio = reader.ReadSingle()
        let tempDirectory = reader.ReadString()
        let autoSaveTime = reader.ReadInt32()
        let showStatusBar = reader.ReadBoolean()
        printfn $"Aspect ratio set to: {aspectRatio}"
        printfn $"Temp directory is: {tempDirectory}"
        printfn $"Auto save time set to: {autoSaveTime}"
        printfn $"Show status bar: {showStatusBar}"
writeDefaultValues ()
displayValues ()
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
	注解
类 BinaryReader 提供了简化从流中读取基元数据类型的方法。 例如,可以使用 ReadBoolean 方法将下一个字节读取为布尔值,并将流中的当前位置前移一个字节。 类包括支持不同数据类型的读取方法。
创建 类的新实例 BinaryReader 时,需要提供要从中读取的流,并根据需要指定编码的类型,以及释放 BinaryReader 对象后是否使流保持打开状态。 如果未指定编码类型,则使用 UTF-8。
重要
此类型实现 IDisposable 接口。 在使用完类型后,您应直接或间接释放类型。 若要直接释放类型,请在 try/catch 块中调用其 Dispose 方法。 若要间接释放类型,请使用 using(在 C# 中)或 Using(在 Visual Basic 中)等语言构造。 有关详细信息,请参阅 IDisposable 接口主题中的“使用实现 IDisposable 的对象”一节。
构造函数
| BinaryReader(Stream) | 
		 基于所指定的流和特定的 UTF-8 编码,初始化 BinaryReader 类的新实例。  | 
        	
| BinaryReader(Stream, Encoding) | 
		 基于所指定的流和特定的字符编码,初始化 BinaryReader 类的新实例。  | 
        	
| BinaryReader(Stream, Encoding, Boolean) | 
		 基于所提供的流和特定的字符编码,初始化 BinaryReader 类的新实例,有选择性的打开流。  | 
        	
属性
| BaseStream | 
		 公开对 BinaryReader 的基础流的访问。  | 
        	
方法
| Close() | 
		 关闭当前阅读器及基础流。  | 
        	
| Dispose() | 
		 释放 BinaryReader 类的当前实例所使用的所有资源。  | 
        	
| Dispose(Boolean) | 
		 释放 BinaryReader 类使用的非托管资源,并可以选择释放托管资源。  | 
        	
| Equals(Object) | 
		 确定指定对象是否等于当前对象。 (继承自 Object) | 
        	
| FillBuffer(Int32) | 
		 用从流中读取的指定字节数填充内部缓冲区。  | 
        	
| GetHashCode() | 
		 作为默认哈希函数。 (继承自 Object) | 
        	
| GetType() | 
		 获取当前实例的 Type。 (继承自 Object) | 
        	
| MemberwiseClone() | 
		 创建当前 Object 的浅表副本。 (继承自 Object) | 
        	
| PeekChar() | 
		 返回下一个可用的字符,并且不提升字节或字符的位置。  | 
        	
| Read() | 
		 从基础流中读取字符,并根据所使用的   | 
        	
| Read(Byte[], Int32, Int32) | 
		 从字节数组中的指定点开始,从流中读取指定的字节数。  | 
        	
| Read(Char[], Int32, Int32) | 
		 从字符数组中的指定点开始,从流中读取指定的字符数。  | 
        	
| Read(Span<Byte>) | 
		 从当前流读取字节序列,并将流中的位置向前移动读取的字节数。  | 
        	
| Read(Span<Char>) | 
		 从当前流中读取与提供的缓冲区长度相同的字符数,将其写入提供的缓冲区,然后根据所使用的   | 
        	
| Read7BitEncodedInt() | 
		 以压缩格式读入 32 位整数。  | 
        	
| Read7BitEncodedInt64() | 
		 一次读取一个 7 位数字。  | 
        	
| ReadBoolean() | 
		 从当前流中读取   | 
        	
| ReadByte() | 
		 从当前流中读取下一个字节,并使流的当前位置提升 1 个字节。  | 
        	
| ReadBytes(Int32) | 
		 从当前流中读取指定的字节数以写入字节数组中,并将当前位置前移相应的字节数。  | 
        	
| ReadChar() | 
		 从当前流中读取下一个字符,并根据所使用的   | 
        	
| ReadChars(Int32) | 
		 从当前流中读取指定的字符数,并以字符数组的形式返回数据,然后根据所使用的   | 
        	
| ReadDecimal() | 
		 从当前流中读取十进制数值,并将该流的当前位置提升十六个字节。  | 
        	
| ReadDouble() | 
		 从当前流中读取 8 字节浮点值,并使流的当前位置提升 8 个字节。  | 
        	
| ReadHalf() | 
		 从当前流中读取 2 字节浮点值,并将流的当前位置前移 2 个字节。  | 
        	
| ReadInt16() | 
		 从当前流中读取 2 字节有符号整数,并使流的当前位置提升 2 个字节。  | 
        	
| ReadInt32() | 
		 从当前流中读取 4 字节有符号整数,并使流的当前位置提升 4 个字节。  | 
        	
| ReadInt64() | 
		 从当前流中读取 8 字节有符号整数,并使流的当前位置提升 8 个字节。  | 
        	
| ReadSByte() | 
		 从此流中读取 1 个有符号字节,并使流的当前位置提升 1 个字节。  | 
        	
| ReadSingle() | 
		 从当前流中读取 4 字节浮点值,并使流的当前位置提升 4 个字节。  | 
        	
| ReadString() | 
		 从当前流中读取一个字符串。 字符串有长度前缀,一次 7 位地被编码为整数。  | 
        	
| ReadUInt16() | 
		 使用 Little-Endian 编码从当前流中读取 2 字节无符号整数,并将流的位置提升 2 个字节。  | 
        	
| ReadUInt32() | 
		 从当前流中读取 4 字节无符号整数并使流的当前位置提升 4 个字节。  | 
        	
| ReadUInt64() | 
		 从当前流中读取 8 字节无符号整数并使流的当前位置提升 8 个字节。  | 
        	
| ToString() | 
		 返回表示当前对象的字符串。 (继承自 Object) | 
        	
显式接口实现
| IDisposable.Dispose() | 
			 此 API 支持产品基础结构,不能在代码中直接使用。 释放 , BaseStream 除非 由 BinaryReader(Stream, Encoding, Boolean)进行其他配置。  |