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クラスのようにクラスの機能としてバッファリングを行うように実装されている場合もあります。