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
Mi potete dire dove sbaglio??? Vi ringrazio di cuore! =)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; } }
Ps: provate a creare due oggetti, a scriverli su file e dopo vedere se vengono letti entrambi. Grazie!

 
					
					
					
						
  Rispondi quotando