既存のファイルを開いて上書きしようとする場合など、既にストリームに何らかの内容が書き込まれている場合、書き込んだ後にSetLengthでストリームの長さも変更しないと以前の内容が残ります。 例えば、FileStreamで長さ16バイトのファイルを開いて8バイトのデータを書き込む場合、SetLengthでストリームの長さも8バイトに設定しないと、ファイルの長さは16バイトのままになります。

SetLengthメソッドを使ってStreamの長さを書き込んだ長さに合わせて変更する
using System;
using System.IO;

class Sample {
  static void Main()
  {
    using (var stream = File.OpenWrite("sample.dat")) {
      // 現在の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);

      // 現在の書き込み位置(8バイト目)をstreamの長さとして設定する
      stream.SetLength(stream.Position);

      Console.WriteLine(stream.Length);
    }
  }
}