|
|
|
![]() |
|
Strumenti |
![]() |
#1 |
Senior Member
Iscritto dal: Jul 2008
Messaggi: 425
|
[JAVA]scrivere oggetti in un file binario
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. EDIT 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 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(); //QUA L'ERRORE. NON POSSO CONVERTIRE UN OGGETTO IN ARCHIVIO(IL MIO TIPO).COME RISOLVERE? istream.close(); return obj; } catch (Exception e) { System.out.println("lettura "+e);return null;} } } ho provato anche con implement serializable; ma niente. ringrazio in anticipo chi mi vorrà rispondere. grazie ciao
__________________
concluso positivamente con : ElleGi92,nightborn,semmy83,Cuto82,damiano77, nicolagragnani,Pantarena,Gabry17,Pagliatek, kaetan, GIACOMO-_ e molti altri Ultima modifica di niccoleo : 08-06-2011 alle 17:54. |
![]() |
![]() |
![]() |
#2 | |
Senior Member
Iscritto dal: Nov 2001
Città: 100 metri dal mare
Messaggi: 4848
|
Quote:
Un'occhiata al javadoc no eh ? http://download.oracle.com/javase/6/...putStream.html
__________________
TIM FTTC 200/20 LIVE SPEEDTEST
|
|
![]() |
![]() |
![]() |
#3 | |
Senior Member
Iscritto dal: Jul 2008
Messaggi: 425
|
Quote:
almeno da quello che ho capito.. sai darmi un consiglio? grazie! EDIT ho aggiornato il post in alto
__________________
concluso positivamente con : ElleGi92,nightborn,semmy83,Cuto82,damiano77, nicolagragnani,Pantarena,Gabry17,Pagliatek, kaetan, GIACOMO-_ e molti altri Ultima modifica di niccoleo : 08-06-2011 alle 17:55. |
|
![]() |
![]() |
![]() |
#4 |
Senior Member
Iscritto dal: Feb 2002
Città: Trento
Messaggi: 962
|
Stando a quanto è scritto qui, "Archivio" dovrebbe implementare Serializable: è così?
__________________
"Et Eärallo Endorenna utúlien. Sinome maruvan ar Hildinyar tenn' Ambar-metta!" -- Aragorn Elessar, Heir of Isildur Mixmar -- OpenSuSE 11.1 on AMD 64 3000+ on DFI LanParty nF4-D | GeForce 6600 GT + Thermaltake Schooner on Samsung 710N Storage -- ( 2 x Hitachi Deskstar 80 Gb + 1 x Hitachi 250 Gb ) = 1 RAID 5 + 1 Storage space LaCie Ethernet Disk Mini 250 Gb | HP - DV2150 EL MILAN CLAN |
![]() |
![]() |
![]() |
#5 | |||
Senior Member
Iscritto dal: Jul 2008
Messaggi: 425
|
Quote:
codice corretto
__________________
concluso positivamente con : ElleGi92,nightborn,semmy83,Cuto82,damiano77, nicolagragnani,Pantarena,Gabry17,Pagliatek, kaetan, GIACOMO-_ e molti altri |
|||
![]() |
![]() |
![]() |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 06:30.