2012-12-04 54 views
0

我想讀一個二進制文件,這是寫在一個特定的模式,例如:string, string, byteBaseStream底層流

我上網網頁,發現這個代碼:

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

即使是容易代碼我無法理解基礎流(BaseStream)是什麼意思?有人可以給我一個簡要的解釋嗎?

回答

3

.NET提供了讀取或寫入數據的不同對象。基本上有DataWriters和DataReader可以寫入或讀入不同的流。 Streams表示數據源(例如文件)到應用程序內存(或後端)之間的數據流。

要以定義的方向訪問流,您可以使用讀者或作者。 BinaryReader是數據讀取器的一個例子。它應該從流中讀取二進制數據。流通常從名爲Stream的基類繼承。有不同類型的流代表不同的數據源。例如,FileStream將數據讀取或寫入HDD上的文件,而MemoryStream將數據讀取或寫入RAM。所以流的實現描述了存儲數據的

DataReaders或DataWriters describe 數據如何存儲。例如,您的BinaryReader讀取字節序列,而TextReader讀取具有給定編碼的文本。但兩者都可以使用相同的流。

回到您的問題:您的BinaryReader從流中讀取二進制數據。 BaseStream屬性返回讀取器讀取數據的流的實例。這就是爲什麼你需要用流實例初始化BinaryReader。您無法告訴計算機從任何地方讀取二進制數據! ;)