ストリームの内容を別のストリームにコピーするには、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メソッドではコピーする長さを指定することはできず、常にストリームの終端までがコピーされます。