wikiHow è una "wiki"; questo significa che molti dei nostri articoli sono il risultato della collaborazione di più autori. Per creare questo articolo, autori volontari hanno collaborato apportando nel tempo delle modifiche per migliorarlo.
Questo articolo è stato visualizzato 10 325 volte
Quando serializzi un oggetto in Java, converti i dati in gruppi di byte e poi li riconverti nella copia dei dati originali. Se questo sembra creare confusione, pensa alla serializzazione nei seguenti termini. Stai lavorando su un documento e ne salvi una copia sul tuo hard disk. Stai, per così dire, serializzando i dati in modo da poterne recuperare una copia in seguito. La serializzazione permette il trasferimento dei dati sul network molto più semplice ed efficiente. È importante che tu comprenda le basi di Java prima di serializzare un oggetto. Se hai usato dei linguaggi di programmazione come Pascal o versioni più vecchie di C, lo conoscerai senza serializzazione, un programmatore deve creare un file di testo di I/O separato per immagazzinare e caricare dei dati. Il seguente articolo contiene i passi per serializzare un oggetto in Java. Il codice d'esempio in questo articoli è utilizzato per gentile concessione del The Java Developers Almanac 1.4.
Passaggi
-
1Apri l'oggetto di codifica Java che richiede la serializzazione o creane uno da zero.
-
2Seleziona l'oggetto in Java che vuoi serializzare. In questo esempio, chiameremo questo oggetto "MyObject".
-
3Attiva la serializzazione degli oggetti in Java facendo sì che la classe MyObject erediti la classe java.io.Serialize. Aggiungi semplicemente la seguente riga di codice all'inizio della classe, rimpiazzando la riga "public class MyObject".public class MyObject implements java.io.Serializable.
-
4Ora il tuo oggetto è serializzabile, questo significa che può essere scritto come un flusso di output, come il seguente:
- Le seguenti linee di codice illustrano come scrivere MyObject (o qualsiasi oggetto serializzabile) su un file o un disco.
try{
// Serializzare un oggetto di dati in un file
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("MyObject.ser"));
out.writeObject(object);
out.close();
// Serializzare un oggetto in un array di byte
ByteArrayOutputStream bos = new ByteArrayOutputStream() ;
out = new ObjectOutputStream(bos) ;
out.writeObject(object);
out.close();
// Ottenere i byte dell'oggetto serializzato
byte[] buf = bos.toByteArray();
} catch (IOException e) {
}
- Le seguenti linee di codice illustrano come scrivere MyObject (o qualsiasi oggetto serializzabile) su un file o un disco.
-
5Può essere letto nel seguente modo:try{ FileInputStream door = new FileInputStream("name_of_file.sav"); ObjectInputStream reader = new ObjectInputStream(door); MyObject x = new MyObject(); x = (MyObject) reader.nextObject();}catch (IOException e){ e.printStackTrace();}
-
6Esegui il codice dell'oggetto serializzato all'interno del programma Java per assicurarti che funzioni effettivamente (opzionale).
-
7Salva e chiudi l'oggetto serializzato in Java.Pubblicità
Consigli
- Dei miglioramenti della serializzazione in Java SE Development Kit 6 permettono di utilizzare il metodo ObjectStreamClass lookupAny per gestire tutte le classi di oggetti non serializzabili.
- Per migliorare I tempi di lettura e scrittura in un albero di oggetti molto vasto, usa la parola chiave "transient" per istanziare le variabili che non richiedono serializzazione. Questo aumenterà le performance dato che non starai più leggendo e scrivendo dati inutili nel processo di serializzazione.
Avvertenze
- Java propone una nuova versione del loro developer's kit all'incirca annualmente. Le nuove versioni includono miglioramenti e modifiche su come un Oggetto può essere serializzato in Java. Quindi è importante monitorare i cambiamenti nella versione che stai utilizzando.
- Quando serializzi degli oggetti, non puoi cifrare I flussi. Quindi, dovrai far affidamento su altre applicazioni o su un processo di trasmissione su un network secondario per proteggere i dati, se necessario.
- Attualmente non c'è nessuna opzione che permette di scrivere gli oggetti in un file ad accesso casuale. Invece, puoi utilizzare il flusso di input output dei Byte Array come base da cui leggere e scrivere gli oggetti. Comunque, assicurati che l'intero oggetto sia nel flusso Byte Array, altrimenti il processo fallirà.
Riferimenti
- http://www.javacoffeebreak.com/articles/serialization/index.html
- http://java.sun.com/products/jndi/tutorial/objects/storing/serial.html
- http://java.sys-con.com/node/44199
- http://zamov.online.fr/EXHTML/JAVA/JAVA_706788.html
- http://java.sun.com/javase/technologies/core/basic/serializationFAQ.jsp#handle
- http://www.exampledepot.com/egs/java.io/SerializeObj.html