Originariamente inviato da VincenzoTheBest
Il metodo readObject (risp. writeObject) appartiene alla classe
ObjectInputStream (risp.
ObjectOutputStream) e
non alla classe DataInputStream (risp. DataOutputStream).
grazie!
sono riuscito a far funzionare la scrittura. per la lettura ho un problema di differenza di tipo.
come fare a deserializzare un oggetto di un tipo inventato da me? (ARCHIVIO)
di seguito il codice aggiornato.
codice:
import java.util.Vector; import java.io.*; public class ArchivioMain implements Serializable { public static void main(String[] args){ char com=' '; com=Input.readChar("premi [a] per aprire un file esistente.[c] per continuare "); if (com=='a'){String nf=Input.readString("inserisci il nome del file salvato "); apri(nf);}; Archivio lista= new Archivio(); char scelta=' '; while(scelta != '5'){ 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] Salva"); System.out.println(" "); System.out.println("[5] Esci"); 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); } if (scelta=='4'){ String nomefile = Input.readString("Inserisci il nome del file dove salvare "); salva(lista,nomefile); } } } private static void salva (Archivio lista, String nomefile) { try { FileOutputStream ostream = new FileOutputStream(nomefile); ObjectOutputStream p = new ObjectOutputStream(ostream); p.writeObject(lista); p.flush(); ostream.close(); } catch (Exception e) {System.out.println("Scrittura fallita "+e);} } private static Archivio apri(String nomefile) { Archivio obj=new Archivio(); try { FileInputStream istream = new FileInputStream(nomefile); ObjectInputStream p = new ObjectInputStream(istream); obj=p.readObject(); istream.close(); return obj; } catch (Exception e) { System.out.println("lettura "+e);return null;} } }