ReadByteメソッドを使うと、Streamからデータを1バイトずつ読み込むことができます。 このメソッドでは、読み込めたデータは戻り値として返されます。 ただし、型はint/Integerとなっているため、読み込めたデータはbyte/Byteにキャストして使います。 ReadByteメソッドの呼び出したとき既にストリームの終端に達していている場合は-1が返されます。
ReadByteメソッドを使ってStreamから1バイトずつデータを読み込む
Imports System
Imports System.IO
Class Sample
Shared Sub Main()
Using stream As Stream = File.OpenRead("sample.dat")
Do
' streamから1バイト読み込む
Dim data As Integer = stream.ReadByte()
If data = -1 Then Exit Do ' 終端に達した
' byteにキャストして表示
Dim b As Byte = CByte(data)
Console.Write("{0:x2} ", b)
Loop
Console.WriteLine()
End Using
End Sub
End Class
Streamクラス自体はバッファリングを行わないため、Peekなどのような先読みを行うメソッド・プロパティは用意されていません。 先読みを行いたい場合はBinaryReader.PeekCharメソッドあるいはStreamReader.Peekメソッドを使います。 バッファリングを行いたい場合はストリームをBufferedStreamクラスでラップします。 Stream派生クラスでは、FileStreamクラスのようにクラスの機能としてバッファリングを行うように実装されている場合もあります。