15/07/14 11:56
Majesticeagle
Salve a tutti, sto provando a fare un programma che mi gestisce una rubrica. Ho una classe Rubrica che ha come attributo un Vector che contiene diversi oggetti di tipo Voce (un'altra classe creata da me). Quando aggiungo una nuova voce al Vector salvo anche i dati su un file con questo metodo:
All'apertura del programma carico i dati salvati precedentemente sul file con questo metodo:
Una volta avviato il programma e caricati i dati dal file, aggiungo un'altra voce al Vector e in pratica è come se soprascrivesse la voce precedente!!! Infatti poi salvo i dati sul file e quando li ricarico sul file è presente soltato l'ultima voce inserita e non anche quella che avevo inserito in un'altra esecuzione e quindi salvato sul file!!!
Aiutatemiiii! Non riesco a capire il problema dov'è!
Dopo diverse prove ho capito che il metodo che uso dall'esterno per aggiungere una voce al Vector funziona male, ossia aggiunge la voce ma non va mai avanti con le posizioni ma sovrascrive sempre la prima!!! Questo è il metodo:
public void salvaDati() { Voce e; try { FileOutputStream f = new FileOutputStream(new File("C:/elenco.dat")); ObjectOutputStream fout = new ObjectOutputStream(f); for(int i=0;i<rubrica.size();i++) { e = (Voce) rubrica.elementAt(i); fout.writeObject(e); } f.close(); }catch(Exception e2) { System.out.println("ERRORE SCRITTURA FILE"); } }
All'apertura del programma carico i dati salvati precedentemente sul file con questo metodo:
public void leggiDati() { try { FileInputStream f = new FileInputStream(new File("C:/elenco.dat")); ObjectInputStream fin = new ObjectInputStream(f); Voce e; while(true) //Finchè non finisce il file { try { e = (Voce) fin.readObject(); rubrica.addElement(e); }catch(EOFException e2) { System.out.println("FINE FILE"); break; //Alla fine del file esco dal ciclo } } f.close(); }catch(Exception e) { System.out.println("ERRORE IN LETTURA DEL FILE"); } }
Una volta avviato il programma e caricati i dati dal file, aggiungo un'altra voce al Vector e in pratica è come se soprascrivesse la voce precedente!!! Infatti poi salvo i dati sul file e quando li ricarico sul file è presente soltato l'ultima voce inserita e non anche quella che avevo inserito in un'altra esecuzione e quindi salvato sul file!!!
Aiutatemiiii! Non riesco a capire il problema dov'è!
Dopo diverse prove ho capito che il metodo che uso dall'esterno per aggiungere una voce al Vector funziona male, ossia aggiunge la voce ma non va mai avanti con le posizioni ma sovrascrive sempre la prima!!! Questo è il metodo:
public void aggiungiVoce(Voce v) { rubrica.addElement(v); //Cercare soluzione a questo metodo System.out.println("DOPO L'AGGIUNTA DELLA VOCE: " + getSize()); }
Ultima modifica effettuata da Majesticeagle 15/07/14 13:15
aaa