BaseStream底层流

时间:2012-12-04 12:43:37

标签: c# stream

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

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

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

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

1 个答案:

答案 0 :(得分:4)

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

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

DataReader或DataWriters描述如何存储数据。例如,您的BinaryReader读取字节序列,而TextReader读取具有给定编码的文本。但两者都可以使用相同的流。

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