さらにFileStreamでは、コンストラクタにFileMode.CreateもしくはFileMode.Truncateを指定してインスタンスを作成すれば、既存のファイルを開いた場合にはその内容は破棄され、ストリームの長さは0となります。 従って、次の例は上記の例と同等の動作となります。
FileStreamを作成する際に既存の内容を破棄してから書き込みを行う
Imports System
Imports System.IO
Class Sample
Shared Sub Main()
' FileMode.Createを指定してFileStreamを作成
Using stream As Stream = New FileStream("sample.dat", FileMode.Create, FileAccess.Write)
' 現在のstreamの長さを表示
Console.WriteLine(stream.Length)
' 書き込むデータが格納されているバイト配列
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
実行結果
D:\test>type sample.dat XXXXXXXXXXXXXXXX D:\test>Sample.exe 0 8 D:\test>type sample.dat ABCDEFGH