Ciao ragazzi!!!
Mi sn iscritto da poco al forum e già ho bisogno di voi per un aiuto...
Sto cominciando a programmare in Java, sono arrivato alla scrittura dei dati
su file e sul mio libro "IL LINGUAGGIO JAVA" c'è scritto che per aggiungere dati in coda a quelli preesistenti, quindi per aprire il 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!!!!!!
Non riesco a trovare la soluzione da nessuna parte e cosi mi sono bloccato probabilmente per la mia ancora troppo scarsa conoscenza del linguaggio.....
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....
Libro libro;
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.");
}
Libro l;
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 senza aprire il file in append scrivo tre oggetti di tipo Libro insieme:
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

Rispondi quotando

