Originariamente inviato da LeleFT
Se per salvare i dati in un file intendi salvare i tuoi dati in un file di testo (informazioni testuali) puoi appoggiarti alla classe PrintStream (java.io.*)
Se, invece, vuoi salvare oggetti, nel senso che vuoi proprio salvare la struttura dell'oggetto creato, per poterne, in un secondo momento, creare un'altro leggendolo dal file di testo, allora devi documentarti sulla Serializzazione: devi innanzitutto implementare l'interfaccia Serializable (java.io.*) nella classe che vuoi salvare su file e, successivamente, creare un oggetto di tipo ObjectOutputStream e richiamare il relativo metodo writeObject()
Qui hai un esempio di un programma che contiene un oggetto NumeroImmaginario che viene salvato sul file "prova.dat":
Ciao.codice:import java.io.*; public class MiaClasse { public class NumeroImmaginario implements Serializable { private int a, b; public NumeroImmaginario(int a, int b) { this.a = a; this.b = b; } } private NumeroImmaginario numero; private ObjectOutputStream oos; // Questo oggetto rappresenta il file public MiaClasse() { // Rappresenta l'immaginario (5 + 6i) numero = new NumeroImmaginario(5, 6); // Apro (ed eventualmente creo) il file di output oos = new ObjectOutputStream( new FileOutputStream("prova.dat") ); // Salvo sul file il numero immaginario (come oggetto) salvaOggetto(numero); } private void salvaOggetto(NumeroImmaginario oggetto) { try { oos.writeObject(oggetto); } catch (Exception e) { e.printStackTrace(); } } public static void main(String [] args) { MiaClasse mc = new MiaClasse(); } }![]()
ho letto qualche topic indietro per cercare risposta... ho trovato questo, ma non ho ancora risolto il problema e i dubbi che ho.
l'ggetto che creo è definito in una classe.
il serializable devo metterlo su all'inizio della classe
es: public class MiaClasse implements Serializable
oppure sul costruttore dell'oggetto?
E tale oggetto è un array di altri oggetti, e contiene 2 campi di tipo intero.
Devo implementare serializable anche nell'oggetto che è contenuto nell'array??? e se si lo devo fare all'inizio della classe che definisce il secondo oggetto(quello dell'array intendo) o nel suo costruttore??
Scusate se son stato contorto ma sono abbastanza principiante in materia.


Rispondi quotando
