ストリームの内容を別のストリームにコピーするには、CopyToメソッドを使うことができます。 あるストリームの内容をコピーしてメモリ上(MemoryStream)に保持したり、ファイル(FileStream)に書き出したりしたい場合などに使えます。

CopyToメソッドを使ってStreamの内容を別のStreamにコピーする
Imports System
Imports System.IO

Class Sample
  Shared Sub Main()
    Using fromStream As Stream = File.OpenRead("sample.dat")
      Using toStream As New MemoryStream()
        ' ファイルの内容をMemoryStreamにコピー
        fromStream.CopyTo(toStream)

        ' コピーした内容をバイト配列に変換して表示
        Console.WriteLine(BitConverter.ToString(toStream.ToArray()))
      End Using
    End Using
  End Sub
End Class

CopyToメソッドでは、コピー元のStreamからReadしたものをコピー先のStreamにWriteします。 この際、コピー元・コピー先ともに現在位置からのコピーが行われます。 つまり現在位置がストリームの先頭でない場合、ストリームの途中からコピーが行われます。 コピー開始時にストリームの先頭へシークされることはありません。 また、CopyToメソッドではコピーする長さを指定することはできず、常にストリームの終端までがコピーされます。