Ciao a tutti,
mi trovo a scrivere un programmino per la gestione di dizionari.
Il problema è che a inizio e fine programma dovrei rispettivamente salvare tutti i dizionari (nell'oggetto lista) su file e aprire da file salvato la volta successiva.
Mi sono letto veramente molta roba sulla serializzazione, su come si fa l'input e l'output ma non riesco a far funzionare il discorso.
quando vado a fare la scrittura ad esempio mi dice che non può usare
os.writeObject(lista);
in quanto lista è di tipo Archivio (che ho creato io)
in input invece
l1= is.readObject();
mi dice che il metodo readObject non esiste.
Qualcuno può darmi una mano? Di seguito il codice in questione :
ho provato anche con implement serializable; ma niente.codice:import java.util.Vector; import java.io.*; public class ArchivioMain { public static void main(String[] args){ //inizio prova lettura String nfileapri=Input.readString("Inserisci il nome del file da aprire. Lascia vuoto per un file nuovo. "); FileInputStream fin = null; try { fin = new FileInputStream(nfileapri); } catch(Exception e){ System.out.println("Creazione nuovo file"); } DataInputStream is = new DataInputStream(fin); int i2; Archivio l1; try { i2 = is.readInt(); l1= is.readObject(); // error is.close(); System.out.println(i2); } catch (Exception e){ System.out.println(""); } //fine prova lettura Archivio lista= new Archivio(); char scelta=' '; System.out.println("Benvenuto in dizionario 1.0 di Albertini Niccolò e Jacopo Baldini"); while(scelta != '4'){ System.out.println(" "); System.out.println("[1] Inserisci Dizionario"); System.out.println(" "); System.out.println("[2] stampa "); System.out.println(" "); System.out.println("[3] cancella"); System.out.println(" "); System.out.println("[4] Esci e salva"); System.out.println(" "); System.out.println("Cerca nei dizionari: inserisci la lettera per ricercare per: [n]Nome [l]Lingua [t]Termini [s]Sinonimi [c]Contrari "); System.out.println(" "); scelta = Input.readChar("----> "); if (scelta=='1'){ String nome= Input.readString("Nome dizionario: "); String lingua= Input.readString("Lingua: "); int nt = Input.readInt("Quanti termini vuoi inserire? "); int i=0; Vector term = new Vector(); for (i=0;i<nt;i++){ String descrizione= Input.readString("Descrizione: "); String sinonimi= Input.readString("Sinonimi: "); String contrari= Input.readString("Contrari: "); Termine c= new Termine(descrizione,sinonimi,contrari); term.add(c); } lista.add(nome,lingua,term); } if (scelta=='n'){ String cercadiz=Input.readString("Inserisci nome dizionario: "); lista.mostra1(cercadiz); } if (scelta=='l'){ String cercalingua=Input.readString("Inserisci la lingua: "); lista.mostra2(cercalingua); } if (scelta=='t'){ String cercater=Input.readString("Termine da ricercare: "); lista.mostra3(cercater); } if (scelta=='s'){ String cercasin=Input.readString("Sinonimo da ricercare: "); lista.mostra4(cercasin); } if (scelta=='c'){ String cercacon=Input.readString("Contrario da ricercare: "); lista.mostra5(cercacon); } if (scelta=='2'){ lista.mostra(); } if (scelta=='3'){ lista.mostra(); int x = Input.readInt("Quale dizionario vuoi cancellare? ")-1; lista.remove(x); } } //inzio prova scrittura String nfilesalva=Input.readString("Inserisci il nome del file dove salvare "); FileOutputStream fs = null; try { fs = new FileOutputStream(nfilesalva); } catch(Exception e){ System.out.println("Apertura fallita"); System.exit(1); } DataOutputStream os = new DataOutputStream(fs); try { os.writeInt(12); os.writeObject(lista); //error os.close(); } catch (Exception e){ System.out.println("Scrittura fallita"); System.exit(2); } //fine prova scrittura } }
ringrazio in anticipo chi mi vorrà rispondere.
grazie ciao

Rispondi quotando