Originariamente inviato da Zama
Possibile che non veda il file come se gli avessi semplicemente "appeso" in coda un altro oggetto?
La questione è molto semplice: il processo di serializzazione inserisce all'inizio un "header" iniziale particolare. Poi seguono tutti gli oggetti serializzati.
Facendo un "append" e aggiungendo altri oggetti, quel header viene nuovamente inserito.
Quando il processo di de-serializzazione legge dallo stream, si trova ad un certo punto con dei dati (l'header iniziale) che non corrispondono a quello che si aspetta, pertanto lo segnala come corrotto.

Morale della favola: con ObjectOutputStream non puoi appendere dati. Soluzioni per "aggirare" questo problema: leggere tutti gli oggetti, metterli in una collezione e poi riscrivere per intero il file, oppure scrivere un nuovo file, quindi muoverlo.