Ciao a tutti,
ho un problema con i file quando devo aggiungere dati in coda a quelli preesistenti, quindi per aprire il file in append.
Per gestire la scrittura e la lettura dei file uso le classi

FileOutputStream e ObjectOutputStream
FileInputStream e ObjectInputStream

Sul mio libro ho trovato scritto che per aprire un file in append basta aggiungere "true" come secondo parametro dell'oggetto FileOutputStream.

FileOutputStream f=new FileOutputStream("nomeFile.dat",true);


Quando però vado a leggere il file con il metodo readObject() questo mi fa leggere solo il primo oggetto registrato sul file o cmq non quelli scritti con l'apertura in append e mi da un errore terminando il programma!!!!!!

Non riesco a trovare la soluzione da nessuna parte e cosi mi sono bloccato.....
Qui sotto vi scrivo il listato del programma nel caso non mi fossi spiegato bene.....
confido ke mi potrete dare una mano...qualsiasi suggerimento è ben accetto e vi ringrazio in anticipo per l'aiuto....


//dichiaro l'oggetto di classe libro

Libro libro;

...
...

//scrivo su file dopo aver inserito i valori per gli attributi

try{
FileOutputStream f=new FileOutputStream("libro.dat",true);
ObjectOutputStream fOUT=new ObjectOutputStream(f);
fOUT.writeObject(libro);
fOUT.flush();
f.close();
}
catch(Exception e){
System.out.println("Errore nella scrittura dei dati su file.");
}

//dichiaro un nuovo oggetto di classe Libro per leggere dal file
Libro l;

/*provo a leggere dal file ripetendo la lettura in un ciclo infinito che viene interrotto
quando si verifica l'eccezione End Of File*/

try{
FileInputStream f=new FileInputStream("libro.dat");
ObjectInputStream fIN=new ObjectInputStream(f);

/*Ciclo infinito per leggere i dati*/
while(true){
try{
l=(Libro) fIN.readObject();
/* stampa degli attributi dell'oggetto L */
System.out.println("Titolo: " + l.titolo);
System.out.println("Autore: " + l.titolo);
............
............
}
catch(EOFException e){
/*interrompe il ciclo*/
break;
}
}
f.close();
}
catch(Exception e){
System.out.println("Errore nella lettura del file." +e.getMessage());
}

Con queste istruzioni il programma mi da un errore, leggendo solo il primo oggetto
scritto su file.
Se invece scrivo tre oggetti di tipo Libro insieme in questo modo, senza aprire il file in append:

fOUT.writeObject(libro1);
fOUT.writeObject(libro2);
fOUT.writeObject(libro3);
fOUT.flush();

allora mi legge tutti e tre gli oggetti.......Come mai?
E' sbagliato il mio modo di scrivere su file in append o di leggere gli oggetti scritti in questo modo?
Aiutatemi per favore....Grazie.

PS:se avete un buon libro sul Java non troppo complesso da consigliarmi vi sarò grato se me ne lasciate il nome.
Ciao e grazie in anticipo per i suggerimenti