Как говорит API , конструктор ObjectOutputStream
записывает заголовок потока сериализации в базовый поток. И этот заголовок ожидается только один раз, в начале файла. Поэтому несколько раз нажимать
new ObjectOutputStream(fos);
на FileOutputStream
, который ссылается на один и тот же файл, будет писать заголовок несколько раз и испортить файл.