BaseStream底层流

mr.*_*day 1 c# stream

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

我上网浏览了一下,发现了这段代码:

while (br.BaseStream.Position<br.BaseStream.Length)
{
    br.ReadString();
    br.ReadString();
    br.ReadByte(); 
}
Run Code Online (Sandbox Code Playgroud)

尽管这是简单的代码,但我无法理解底层流(BaseStream)的含义是什么?有人可以给我一个简短的解释吗?

Car*_*ten 6

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

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

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

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