我试图读取一个二进制文件,它是以某种模式编写的,例如:string, string, byte
我上网并找到了这段代码:
while (br.BaseStream.Position<br.BaseStream.Length)
{
br.ReadString();
br.ReadString();
br.ReadByte();
}
即使它是简单的代码,我也无法理解底层流(BaseStream)的含义?有人可以给我一个简短的解释吗?
.NET 提供了不同的对象来读取或写入数据。基本上有 DataWriters 和 DataReader 可以写入或读取不同的流。流表示数据源(例如文件)到应用程序内存(或返回)之间的数据流。
要以定义的方向访问流,您可以使用读取器或写入器。BinaryReader
是数据读取器的一个示例。它应该从流中读取二进制数据。流通常继承自一个名为Stream
. 有不同类型的流代表不同的数据源。例如,aFileStream
将数据读取或写入 HDD 上的文件,而 aMemoryStream
将数据读取或写入 RAM。因此,流的实现描述了数据的存储位置。
DataReaders 或 DataWriters 描述了数据的存储方式。例如,您BinaryReader
读取字节序列,而 aTextReader
读取具有给定编码的文本。但两者都可以用于同一个流。
回到您的问题:您BinaryReader
从流中读取二进制数据。该BaseStream
属性返回读取器从中读取数据的流的实例。这就是您需要BinaryReader
使用流实例初始化的原因。你不能告诉计算机从任何地方读取二进制数据!;)