ストリームの長さを変更したい場合は、SetLengthメソッドを呼び出します。 SetLengthメソッドで現在のStreamの長さよりも短くする場合、その内容は切り捨てられます。 同時に、ストリームの書き込み・読み込み位置はストリームの終端に移動します。 逆に現在のStreamの長さよりも長くする場合、拡張した部分の内容は定義されません。 ストリームの読み込み・書き込み位置は変わりません。

SetLengthメソッドを使ってStreamの長さを変更する
Imports System
Imports System.IO

Class Sample
  Shared Sub Main()
    Using stream As Stream = File.OpenWrite("sample.dat")
      ' 書き込むデータが格納されているバイト配列
      Dim buffer() As Byte = New Byte(7) {&h41, &h42, &h43, &h44, &h45, &h46, &h47, &h48}

      ' bufferの8バイト分をstreamに書き込む
      stream.Write(buffer, 0, 8)

      ' streamの長さを4バイトにする
      stream.SetLength(4)
    End Using
  End Sub
End Class

Positionプロパティとは異なりLengthプロパティは読み取り専用なので、このプロパティに値を設定してストリームの長さを変更することは出来ません。

長さが変更できないストリームに対してSetLengthを呼び出そうとした場合には、例外NotSupportedExceptionがスローされます。 例えば、NetworkStreamや標準入出力のストリーム、固定長に設定されたMemoryStreamなどは長さが変更できないストリームです。