PDA

View Full Version : [JAVA] salvataggio e caricamento oggetto ..


etzocri
25-06-2003, 16:03
ciao a tutti.. torno a rompervi le scatole con un dubbio..
allora..
io ho un oggetto che ho dichiarato static.
questo oggetto contiene due metodi: salva e carica da file, quando all'interno di un'altra classe richiamo questi due metodi il compilatore mi da errori di IOEXception oppure non salva.. vi posto il codice di entrambi i metodi:
SALVA:
public void salva() throws IOException
{
FileOutputStream outfile = new FileOutputStream ("magazzino.dat");
ObjectOutputStream outstream = new ObjectOutputStream(outfile);
outstream.writeObject(vettore_m);

}

CARICA:
public void carica() throws IOException
{

FileInputStream infile=new FileInputStream("magazzino.dat");
ObjectInputStream instream = new ObjectInputStream(infile);
//quì manca qualche cosa
}


aiutooo grazie

PGI
25-06-2003, 16:54
Può essere un problema di serializzazione. L'oggetto ObjectOutputStream traduce un oggetto in una sequenza di byte solo a certe condizioni. In particolare devi vedere se "vettore_m" implementa l'interfaccia "Serializable" e se è una lista (ad es. un Vector) che tutti i suoi elementi implementino l'interfaccia "Serializable".

etzocri
25-06-2003, 17:21
grazie per la risposta..
il problema del salvataggio è nel fatto che se richiamo il metodo oggetto.salva();
mi chiede delle parentesi graffe inutili..
ti metto in allegato la parte di codice dove me le chiede..
per il caricamento da file nessun aiutino?? :p


class finestra2_jButton6_actionAdapter implements java.awt.event.ActionListener throws IOException{ // chiede una qui
{
finestra2 adaptee;

finestra2_jButton6_actionAdapter(finestra2 adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e)throws IOException {
adaptee.jButton6_actionPerformed(e);
}
}

class finestra2_jButton7_actionAdapter implements java.awt.event.ActionListener {
finestra2 adaptee;

finestra2_jButton7_actionAdapter(finestra2 adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton7_actionPerformed(e);
}
}

class finestra2_jButton8_actionAdapter implements java.awt.event.ActionListener {
finestra2 adaptee;

finestra2_jButton8_actionAdapter(finestra2 adaptee) {
this.adaptee = adaptee;
}
public void actionPerformed(ActionEvent e) {
adaptee.jButton8_actionPerformed(e);
}
}// ed una qui

etzocri
25-06-2003, 17:23
la classe Jbutton6 è quello che chiama il metodo salva..
infatti è l'unica con l'IOException..

PGI
25-06-2003, 17:34
La clausola throws si usa con i metodi, se la scrivi per le classi il compilatore si ribella. Per intercettare l'eccezione:

try {
...operazione che richiama il metodo save
} catch(IOException e) {
...gestione dell'eccezione "e"
}

per il metodo load

try {
...
} catch(IOexception e) {
...
} catch(ClassNotFoundException e) {
...
}

per deserializzare un oggetto

Object obj=ObjectInputStream.readObject();

poi (o durante) fai il casting dell'Oggetto obj nel tipo.

Ciao.

etzocri
25-06-2003, 17:36
sei gentilissimo.. ora modifico il codice..
se ho altri problemi.. tornerò.. :cool:

etzocri
25-06-2003, 17:36
sei gentilissimo.. ora modifico il codice..
se ho altri problemi.. tornerò.. :cool:

PGI
25-06-2003, 17:43
E' che sono in vacanza e me la godo un mondo :cool:

Ciao.

etzocri
25-06-2003, 17:53
mi da l'errore nella riga rossa..


void jButton7_actionPerformed(ActionEvent e) throws ClassNotFoundException{

try {

finestra1.vett.carica();
finestra27 apri=new finestra27();
apri.show();

} catch(ClassNotFoundException r) {

}


"finestra2.java": Error #: 556 : exception java.lang.ClassNotFoundException is never thrown in the corresponding try block at line 118, column 6

PGI
25-06-2003, 18:19
o throws nella dichiarazione del metodo o try catch nel corpo (per lo stesso tipo di eccezione). il troppo stroppia!

etzocri
25-06-2003, 18:46
anche togliendo il throw dal metodo mi da lo stesso errore..
lo so che ti stresso.. :muro:

etzocri
25-06-2003, 18:48
risolto.. e funziona bene adesso..
grazie mille..