|
|||||||
|
|
|
![]() |
|
|
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 18:54. |
|
|
|
|
|
#2 | |
|
Senior Member
Iscritto dal: Nov 2001
Città: 100 metri dal mare
Messaggi: 4856
|
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 18: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: 23:09.



















