Ciao a tutti, mi rivolgo a voi perché proprio non so più dove sbattere la testa. Io un file che contiene deu oggetti di classe Oggetto e poi ho 2 file, uno per scrivere sul e l'altro per leggere dai file. Solo che mi dice, in fase di lettura, che non può leggere gli oggetti dal file!
Vi metto qui il codice, è semplice ed intuibile:
CLASSE: OGGETTO
codice:
import java.io.*;
import java.util.*;
public class Oggetto implements Serializable
{
int numero = 4;
public Oggetto()
{
numero = numero + 3;
}
public void descrivi()
{
System.out.println("Il numero vale: " + numero);
}
public static void main(String arg[])
{
/*
try
{
Oggetto ogg1 = new Oggetto();
Oggetto ogg2 = new Oggetto();
ScriviSuFile scrittore = new ScriviSuFile("DATI", "dat", false);
scrittore.scriviOggetto("DATI", "dat", true, ogg1);
scrittore.scriviOggetto("DATI", "dat", true, ogg2);
} catch(Throwable e) { System.out.println("ERRORE!"); }
*/
try
{
LeggiDaFile lettore = new LeggiDaFile("DATI", "dat");
Oggetto ogg1 = (Oggetto)(lettore.leggiOggetto("DATI", "dat"));
Oggetto ogg2 = (Oggetto)(lettore.leggiOggetto("DATI", "dat"));
ogg1.descrivi();
ogg2.descrivi();
} catch(Throwable e) { System.out.println("ERRORE!"); }
}
}
CLASSE: ScriviSuFile
codice:
import java.io.*;
import java.util.*;
public class ScriviSuFile implements Serializable
{
public ScriviSuFile(String NOME_FILE, String ESTENSIONE, boolean append)
{
try
{
FileOutputStream out;
ObjectOutputStream s;
out = new FileOutputStream(NOME_FILE + "." + ESTENSIONE, append);
s = new ObjectOutputStream(out);
} catch (Throwable e) { System.out.println("Errore di apertura del flusso di dati"); }
}
public void scriviOggetto(String NOME_FILE, String ESTENSIONE, boolean append, Object oggetto)
{
try
{
FileOutputStream out;
ObjectOutputStream s;
out = new FileOutputStream(NOME_FILE + "." + ESTENSIONE, append);
s = new ObjectOutputStream(out);
s.writeObject(oggetto);
s.close();
} catch (Throwable e) { System.out.println("Errore di scrittura dei dati"); }
}
}
CLASSE: LeggiDaFile
codice:
import java.io.*;
import java.util.*;
public class LeggiDaFile implements Serializable
{
public LeggiDaFile(String NOME_FILE, String ESTENSIONE)
{
try
{
FileInputStream file;
ObjectInputStream in;
file = new FileInputStream(NOME_FILE + "." + ESTENSIONE);
in = new ObjectInputStream(file);
} catch (Throwable e) { System.out.println("Errore di apertura del flusso di dati"); }
}
public Object leggiOggetto(String NOME_FILE, String ESTENSIONE)
{
Object oggetto = new Object();
try
{
FileInputStream file;
ObjectInputStream in;
file = new FileInputStream(NOME_FILE + "." + ESTENSIONE);
in = new ObjectInputStream(file);
oggetto =(Object)(in.readObject());
in.close();
} catch (Throwable e) { System.out.println("Errore di lettura dei dati"); }
return oggetto;
}
}
Mi potete dire dove sbaglio??? Vi ringrazio di cuore! =)
Ps: provate a creare due oggetti, a scriverli su file e dopo vedere se vengono letti entrambi. Grazie!