04/02/09 18:18
netarrow
Senza codice, non possiamo aiutarti.
Mostraci come salvi e come carichi.
Cmq io personalmente non ho mai serializzato più di un oggetto per file. Se avevo più oggetti da serializzare li mettevo in un vettore e serializzavo il vettore.
Mostraci come salvi e come carichi.
Cmq io personalmente non ho mai serializzato più di un oggetto per file. Se avevo più oggetti da serializzare li mettevo in un vettore e serializzavo il vettore.
aaa
06/02/09 7:00
Cesaruz
OK ora ti metto il codice...
Inquesta parte dichiaro i vari stream di input e di output e poi ricarico i vari oggetti nel mio vettore...
Ora il salvataggio...
Ok qui salvo...ci sono delle classi che uso per gestire il vettore ed i vari oggetti...se possono servire ditemelo che le posto...
Grazie anticipatamente a tutti
public static void main(String[] args)throws Exception { //boolean pieno=false; //creazione del file File f = new File("Libr.txt"); File fo = new File("Libri.dat"); // File o = new File("Libri.dat"); //Stream di input per file di oggtti if(f.canWrite()){ System.out.println("Si puo scrivere "); } //Input per i file bufferizzati FileReader lettura = new FileReader(f); BufferedReader leggobuf = new BufferedReader(lettura); //Stream di output per file bufferizzati BufferedWriter scr =new BufferedWriter(new FileWriter(f,true)); //Stream di output file di oggetti //FileOutputStream fout = new FileOutputStream(o,true); ObjectOutputStream writ = new ObjectOutputStream(new FileOutputStream(fo,true)); FileInputStream fin=new FileInputStream(fo); ObjectInputStream leggo=new ObjectInputStream(fin); // RandomAccessFile leggor = new RandomAccessFile("Libr.dat","rw"); //Accesso alla tastiera BufferedReader input = new BufferedReader(new InputStreamReader(System.in)); // Main Libreria Libro L=new Libro();//Oggetto libro per l'acquisizione Gestione_Libreria Libr = new Gestione_Libreria(100); //Oggeto gestione libri che rappresenta il vettore dei libri try{ Libro l= new Libro(); System.out.println("Leggo da file... "); try{ while(true){ try{ l = (Libro)leggo.readObject(); Libr.setLibro(l); Libr.incrementa(); System.out.println(l.ToString()); }catch(EOFException ex){ break; } // n--; } leggo.close(); }finally{ System.out.println("Tentativo di lettura..."); } }catch(Exception ex){ System.out.println("Attenzione :"+ex); }
Inquesta parte dichiaro i vari stream di input e di output e poi ricarico i vari oggetti nel mio vettore...
Ora il salvataggio...
System.out.println("Salvo su file..."); writ.write(Libr.getNlibri()); scr.write(Libr.getNlibri()); for(int i =0;i<Libr.getNlibri();i++){ scr.write("---------------------------"); scr.write(Libr.getLibro(i).ToString()); scr.write("\n---------------------------"); scr.newLine(); writ.writeObject(Libr.getLibro(i)); } scr.close();
Ok qui salvo...ci sono delle classi che uso per gestire il vettore ed i vari oggetti...se possono servire ditemelo che le posto...
Grazie anticipatamente a tutti
aaa
06/02/09 10:13
netarrow
invece di serializzare per ogni oggetto, inserisci ogni oggetto in un Vector, e poi serializza un'unica volta l'oggetto Vector.
aaa
06/02/09 18:09
Cesaruz
Senti ho provato ma non sono ancora riuscito...mi lacia sempre lo stesso tipo di eccezzione... comunque ora ti posto il codice probabilmente ho sbagliato qualcosa.
Questo lo uso per leggere:
E questo per salvare:
l'eccezzione in lettura è sempre la stessa:
java.io.StreamCorruptedException: invalid type code: AC
Grazie anticipatamente a tutti.
Questo lo uso per leggere:
Vector v = new Vector(1,1); try{ while(true){ try{ v= (Vector)leggo.readObject(); }catch(EOFException e){ break; } } leggo.close(); }catch(Exception ex){ System.out.println("Attenzione : "+ex); }
E questo per salvare:
for(int i =0;i<Libr.getNlibri();i++){ v.add(Libr.getLibro(i)); scr.write("---------------------------"); scr.write(Libr.getLibro(i).ToString()); scr.write("\n---------------------------"); scr.newLine(); //writ.writeObject(Libr.getLibro(i)); } writ.writeObject(v);
l'eccezzione in lettura è sempre la stessa:
java.io.StreamCorruptedException: invalid type code: AC
Grazie anticipatamente a tutti.
Ultima modifica effettuata da Cesaruz 06/02/09 18:10
aaa
06/02/09 22:27
netarrow
che sia writ che non viene chiuso con close?
se non è neanche questo metti come allegato il progetto e quando ho tempo lo provo.
se non è neanche questo metti come allegato il progetto e quando ho tempo lo provo.
aaa
10/02/09 18:05
Cesaruz
Ok grazie..ora funziona avevo sbagliato la chiusura dello strea...
Cmq ora avrei un'altra domanda... per i file di testo quindi di caratteri per la lettura utlizzo il metodo readLine() che mi restituisce una stringa con l'intera linea...però come faccio a smettere di leggere dal file???Nel senso come faccio a capire che non c'è più niente da leggere??La IOException mi pare che non viene lanciata...
Grazie in anticipo a tutti...
Cmq ora avrei un'altra domanda... per i file di testo quindi di caratteri per la lettura utlizzo il metodo readLine() che mi restituisce una stringa con l'intera linea...però come faccio a smettere di leggere dal file???Nel senso come faccio a capire che non c'è più niente da leggere??La IOException mi pare che non viene lanciata...
Grazie in anticipo a tutti...
aaa