Salve a tutti,
volevo sapere se è possibile serializzare un'intera classe di java su un file (.txt o .bin)? Ad esempio, se memorizzo dei dati in un vettore vorrei che al successivo avvio del programma questi dati possano essere ricaricati. Grazie
Salve a tutti,
volevo sapere se è possibile serializzare un'intera classe di java su un file (.txt o .bin)? Ad esempio, se memorizzo dei dati in un vettore vorrei che al successivo avvio del programma questi dati possano essere ricaricati. Grazie
La "serializzazione" degli oggetti definisce uno stream di dati che è di fatto "binario". Insomma, non è intelleggibile , se non per quelle parti dove ci sono sequenze di caratteri per cui qualcosa si intravede. Quindi usare una estensione .txt sarebbe un po' fuorviante! Meglio .bin, .dat, .ser o cose del genere.
Inoltre un array o collezione è serializzabile, a patto che il contenuto sia altrettanto serializzabile. Chiaramente devi sapere cosa vuol dire rendere "(de)serializzabile" una classe.![]()
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Si, grazie. Potresti indicarmi come è possibile serializzare un vettore?
Grazie
Un esempio minimale
codice:import java.io.*; public class SerializeArray { public static void main(String[] args) { // Vettore di interi da serializzare int[] vettore = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10}; FileOutputStream fos = null; ObjectOutputStream oos = null; try { // Apro lo stream di output su un file chiamato "serial_array.ser" fos = new FileOutputStream("serial_array.ser"); oos = new ObjectOutputStream( fos ); // Serializzo l'array sul file oos.writeObject( vettore ); oos.flush(); } catch (Exception e) { e.printStackTrace(); } finally { if (oos != null) { try { oos.close(); } catch (Exception e) { } } else { if (fos != null) { try { fos.close(); } catch (Exception e) { } } } } } }
Ciao.![]()
"Perchè spendere anche solo 5 dollari per un S.O., quando posso averne uno gratis e spendere quei 5 dollari per 5 bottiglie di birra?" [Jon "maddog" Hall]
Fatti non foste a viver come bruti, ma per seguir virtute e canoscenza
Grazie mille, è proprio quello che mi serviva!!!
Vettore intendi array o java.util.Vector (collezione)? Cambia poco comunque, nel senso che l'importante è che il contenuto siano oggetti serializzabili.
Quindi cosa contiene? Se contiene oggetti di una tua classe, devi averla scritta in modo appropriato. Come minimo che implementi java.io.Serializable e poi che non abbia controindicazioni alla (de)serializzazione. Ci sono regole e criteri ben precisi.
Una volta che hai fatto questo, ti basta usare ObjectOutputStream/ObjectInputStream e i loro rispettivi writeObject e readObject.
Andrea, andbin.dev – Senior Java developer – SCJP 5 (91%) • SCWCD 5 (94%)
java.util.function Interfaces Cheat Sheet — Java Versions Cheat Sheet
Sisi intendo quello. Grazie