さらにFileStreamでは、コンストラクタにFileMode.CreateもしくはFileMode.Truncateを指定してインスタンスを作成すれば、既存のファイルを開いた場合にはその内容は破棄され、ストリームの長さは0となります。 従って、次の例は上記の例と同等の動作となります。
FileStreamを作成する際に既存の内容を破棄してから書き込みを行う
using System;
using System.IO;
class Sample {
static void Main()
{
// FileMode.Createを指定してFileStreamを作成
using (var stream = new FileStream("sample.dat", FileMode.Create, FileAccess.Write)) {
// 現在のstreamの長さを表示
Console.WriteLine(stream.Length);
// 書き込むデータが格納されているバイト配列
var buffer = new byte[8] {0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48};
// bufferの8バイト分をstreamに書き込む
stream.Write(buffer, 0, 8);
Console.WriteLine(stream.Length);
}
}
}
実行結果
D:\test>type sample.dat XXXXXXXXXXXXXXXX D:\test>Sample.exe 0 8 D:\test>type sample.dat ABCDEFGH