そもそも最初から全部書き出し直すのが前提?
seekして1バイトだけ書き換えるのではだめなん?