niccoleo
08-06-2011, 15:01
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
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
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
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