0

我试图读取一个二进制文件,它是以某种模式编写的,例如:string, string, byte

我上网并找到了这段代码:

while (br.BaseStream.Position<br.BaseStream.Length)
{
    br.ReadString();
    br.ReadString();
    br.ReadByte(); 
}

即使它是简单的代码,我也无法理解底层流(BaseStream)的含义?有人可以给我一个简短的解释吗?

4

1 回答 1

4

.NET 提供了不同的对象来读取或写入数据。基本上有 DataWriters 和 DataReader 可以写入或读取不同的流。表示数据源(例如文件)到应用程序内存(或返回)之间的数据流。

要以定义的方向访问流,您可以使用读取器或写入器。BinaryReader是数据读取器的一个示例。它应该从流中读取二进制数据。流通常继承自一个名为Stream. 有不同类型的流代表不同的数据源。例如,aFileStream将数据读取或写入 HDD 上的文件,而 aMemoryStream将数据读取或写入 RAM。因此,流的实现描述了数据的存储位置

DataReaders 或 DataWriters 描述了数据的存储方式。例如,您BinaryReader读取字节序列,而 aTextReader读取具有给定编码的文本。但两者都可以用于同一个流。

回到您的问题:您BinaryReader从流中读取二进制数据。该BaseStream属性返回读取器从中读取数据的流的实例。这就是您需要BinaryReader使用流实例初始化的原因。你不能告诉计算机从任何地方读取二进制数据!;)

于 2012-12-04T13:02:44.750 回答