上記の例ではすべての書き込みが終わって長さが確定してからSetLengthメソッドを呼び出していますが、次のようにあらかじめ長さを0にしてストリームの内容を破棄してから書き込むようにすれば、実際に書き込んだ長さを後から調べる必要がなくなり実装を簡略化できます。
Streamの長さをいったん0に設定して内容を破棄してから書き込みを行う
Imports System
Imports System.IO
Class Sample
Shared Sub Main()
Using stream As Stream = File.OpenWrite("sample.dat")
' 現在のstreamの長さを表示
Console.WriteLine(stream.Length)
' streamの長さをいったん0にして現在の内容を破棄する
stream.SetLength(0)
' 書き込むデータが格納されているバイト配列
Dim buffer() As Byte = New Byte(7) {&h41, &h42, &h43, &h44, &h45, &h46, &h47, &h48}
' bufferの8バイト分をstreamに書き込む
stream.Write(buffer, 0, 8)
Console.WriteLine(stream.Length)
End Using
End Sub
End Class