Visualizzazione dei risultati da 1 a 7 su 7

Discussione: Serializzazione

  1. #1

    Serializzazione

    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

  2. #2
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Giovanni255 Visualizza il messaggio
    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.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  3. #3
    Si, grazie. Potresti indicarmi come è possibile serializzare un vettore?
    Grazie

  4. #4
    Moderatore di Programmazione L'avatar di LeleFT
    Registrato dal
    Jun 2003
    Messaggi
    17,320
    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

  5. #5
    Grazie mille, è proprio quello che mi serviva!!!

  6. #6
    Utente di HTML.it L'avatar di andbin
    Registrato dal
    Jan 2006
    residenza
    Italy
    Messaggi
    18,284
    Quote Originariamente inviata da Giovanni255 Visualizza il messaggio
    Si, grazie. Potresti indicarmi come è possibile serializzare un vettore?
    Grazie
    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.devSenior Java developerSCJP 5 (91%) • SCWCD 5 (94%)
    java.util.function Interfaces Cheat SheetJava Versions Cheat Sheet

  7. #7
    Sisi intendo quello. Grazie

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.