Magari ho capito male, ma mi state dicendo che salvando in un file di testo dopo non sono in grado di recupeare le vecchie istanze della classe Libro? Forse stò sbagliando ma mi sembra di averle recuperate:
Per favore ditemi se stò sbagliando o sono sulla strada giusta. Ho testato il programma e mi sembra di importare tutto facendo poi un cast (l'unico problema è che prima bisogna salvare e poi aprire in quanto il file "archivio.dat" non contiene ArrayList all'inizio).codice:import java.util.*; import java.io.*; import javax.swing.*; public class TestLettura3 { public static void main(String[]args)throws Exception { String input2 = JOptionPane.showInputDialog("Vuoi aprire? S/N"); if (input2.equalsIgnoreCase("s")) { FileInputStream file = new FileInputStream("archivio.dat"); ObjectInputStream in = new ObjectInputStream(file); ArrayList libri2 =(ArrayList)in.readObject(); in.close(); for(int i = 0; i<libri2.size();i++) { Libro2 l = (Libro2)libri2.get(i); System.out.println("nome="+l.getNome()); } } String input = JOptionPane.showInputDialog("Vuoi salvare? S/N"); if (input.equalsIgnoreCase("s")) { ArrayList libri = new ArrayList(); libri.add(new Libro2("Lupo",30000)); libri.add(new Libro2("gggg",5000)); libri.add(new Libro2("gfddfdgg",7000)); FileOutputStream file = new FileOutputStream("archivio.dat"); ObjectOutputStream out = new ObjectOutputStream(file); out.writeObject(libri); out.close(); } System.exit(0); } } class Libro2 implements java.io.Serializable { public Libro2(String aNome, double aCosto) { nome = aNome; costo = aCosto; } public String getNome() { return nome; } public double getCosto() { return costo; } private String nome; private double costo; private void writeObject(java.io.ObjectOutputStream out) throws IOException { out.writeObject(nome); out.writeDouble(costo); } private void readObject(java.io.ObjectInputStream in) throws IOException, ClassNotFoundException { nome = (String)in.readObject(); costo = (double)in.readDouble(); } }


Rispondi quotando