System.IO.BinaryReader 类
方法描述
用特定的编码将基元数据类型读作二进制值。
语法定义(C# System.IO.BinaryReader 类 的用法)
[ComVisibleAttribute(true)] public class BinaryReader : IDisposable
构造函数
构造函数名称 | 构造函数描述 |
---|---|
BinaryReader(Stream) | 基于所提供的流,用 UTF8Encoding 初始化 BinaryReader 类的新实例。 |
BinaryReader(Stream, Encoding) | 基于所提供的流和特定的字符编码,初始化 BinaryReader 类的新实例。 |
成员/方法
方法名称 | 方法描述 |
---|---|
Close | 关闭当前阅读器及基础流。 |
Dispose() | 释放由 BinaryReader 类的当前实例占用的所有资源。 |
Dispose(Boolean) | 释放由 BinaryReader 类占用的非托管资源,还可以另外再释放托管资源。 |
Equals(Object) | 确定指定的 Object 是否等于当前的 Object。 (继承自 Object。) |
FillBuffer | 用从流中读取的指定字节数填充内部缓冲区。 |
Finalize | 允许对象在“垃圾回收”回收之前尝试释放资源并执行其他清理操作。 (继承自 Object。) |
GetHashCode | 用作特定类型的哈希函数。 (继承自 Object。) |
GetType | 获取当前实例的 Type。 (继承自 Object。) |
MemberwiseClone | 创建当前 Object 的浅表副本。 (继承自 Object。) |
PeekChar | 返回下一个可用的字符,并且不提升字节或字符的位置。 |
Read() | 从基础流中读取字符,并根据所使用的 Encoding 和从流中读取的特定字符,提升流的当前位置。 |
Read(Byte[], Int32, Int32) | 从字节数组中的指定点开始,从流中读取指定的字节数。 |
Read(Char[], Int32, Int32) | 从字符数组中的指定点开始,从流中读取指定的字符数。 |
Read7BitEncodedInt | 以压缩格式读入 32 位整数。 |
ReadBoolean | 从当前流中读取 Boolean 值,并使该流的当前位置提升 1 个字节。 |
ReadByte | 从当前流中读取下一个字节,并使流的当前位置提升 1 个字节。 |
ReadBytes | 从当前流中读取指定的字节数以写入字节数组中,并将当前位置前移相应的字节数。 |
ReadChar | 从当前流中读取下一个字符,并根据所使用的 Encoding 和从流中读取的特定字符,提升流的当前位置。 |
ReadChars | 从当前流中读取指定的字符数,并以字符数组的形式返回数据,然后根据所使用的 Encoding 和从流中读取的特定字符,将当前位置前移。 |
ReadDecimal | 从当前流中读取十进制数值,并将该流的当前位置提升十六个字节。 |
ReadDouble | 从当前流中读取 8 字节浮点值,并使流的当前位置提升 8 个字节。 |
ReadInt16 | 从当前流中读取 2 字节带符号整数,并使流的当前位置提升 2 个字节。 |
ReadInt32 | 从当前流中读取 4 字节带符号整数,并使流的当前位置提升 4 个字节。 |
ReadInt64 | 从当前流中读取 8 字节带符号整数,并使流的当前位置向前移动 8 个字节。 |
ReadSByte | 从此流中读取一个有符号字节,并使流的当前位置提升 1 个字节。 |
ReadSingle | 从当前流中读取 4 字节浮点值,并使流的当前位置提升 4 个字节。 |
ReadString | 从当前流中读取一个字符串。 字符串有长度前缀,一次 7 位地被编码为整数。 |
ReadUInt16 | 使用 Little-Endian 编码从当前流中读取 2 字节无符号整数,并将流的位置提升 2 个字节。 |
ReadUInt32 | 从当前流中读取 4 字节无符号整数并使流的当前位置提升 4 个字节。 |
ReadUInt64 | 从当前流中读取 8 字节无符号整数并使流的当前位置提升 8 个字节。 |
ToString | 返回表示当前对象的字符串。 (继承自 Object。) |
提示和注释
有关通用 I/O 任务的列表,请参见通用 I/O 任务。
System.IO.BinaryReader 类例子
下面的代码示例阐释了如何在文件中存储应用程序设置以及如何检索这些设置。
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(); } }
线程安全
此类型的任何公共 static(在 Visual Basic 中为 Shared) 成员都是线程安全的。但不保证所有实例成员都是线程安全的。
版本信息
.NET Framework 受以下版本支持:4、3.5、3.0、2.0、1.1、1.0 .NET Framework Client Profile 受以下版本支持:4、3.5 SP1 受以下版本支持:
适用平台
Windows 7, Windows Vista SP1 或更高版本, Windows XP SP3, Windows XP SP2 x64 Edition, Windows Server 2008(不支持服务器核心), Windows Server 2008 R2(支持 SP1 或更高版本的服务器核心), Windows Server 2003 SP2 .NET Framework 并不是对每个平台的所有版本都提供支持。有关支持的版本的列表,请参见.NET Framework 系统要求。