立川です。

akimichi> 質問は、ロックしたファイルを最初から全て書換えるにはどうすればよいのか、というものです。

アドバイス通り truncate を使えばうまくいきました。Kambeさん、Araiさん、ありがとうございました。

  File.open($DataFile,File::RDWR) do |file|
    file.flock(File::LOCK_EX)  # ファイルをロックする
    ロックしたファイルを読み込んでいじる。

    file.truncate(0)

    file.seek(IO::SEEK_SET)
    file.printf "%s\n","新たに書き込みたい文字列")
    file.flock(File::LOCK_UN)  # ロックの開放
  end