DeserializzazioneIn informatica, nella programmazione orientata agli oggetti, deserializzare un oggetto significa ricostruirlo a partire dalla sua rappresentazione binaria ottenuta da un file o da un canale di rete. Il processo inverso si chiama serializzazione e trasforma un oggetto nella sua rappresentazione binaria che, successivamente, può essere salvata su una memoria di massa o si può trasmettere su un canale di rete. Non bisogna confondere la deserializzazione con una lettura di dati o parametri da un file o da un canale di rete per ottenere le proprietà da caricare in un oggetto. Deserializzazione di un oggettoProcedura in visual basicQuando si deserializza un oggetto, il formato del trasporto determina se verrà creato un flusso o un oggetto file. Dopo avere determinato il formato del trasporto, è possibile chiamare il metodo Serialize o Deserialize, in base alle esigenze. Per deserializzare un oggetto
Dim myObject As MySerializableClass
' Construct an instance of the XmlSerializer with the type
' of object that is being deserialized.
Dim mySerializer As XmlSerializer = New
XmlSerializer(GetType(MySerializableClass))
' To read the file, create a FileStream.
Dim myFileStream As FileStream = _
New FileStream("myFileName.xml", FileMode.Open)
' Call the Deserialize method and cast to the object type.
myObject = CType( _
mySerializer.Deserialize(myFileStream), MySerializableClass)
Procedura in C# MySerializableClass myObject;
// Construct an instance of the XmlSerializer with the type
// of object that is being deserialized.
XmlSerializer mySerializer =
new XmlSerializer(typeof(MySerializableClass));
// To read the file, create a FileStream.
FileStream myFileStream =
new FileStream("myFileName.xml", FileMode.Open);
// Call the Deserialize method and cast to the object type.
myObject = (MySerializableClass)
mySerializer.Deserialize(myFileStream)
Procedura in JavaDi seguito un esempio di classe Java che carica un oggetto Vector da un file e, nel caso il file non esista, lo crea. import java.io.*;
import java.util.*;
public class Serialize {
/**
* @param obj '''''Object''''' - L'oggetto da salvare.
* @param filename '''''String''''' - Il file dove salvarlo.
*/
public static void serializza(Object daSerializzare, String filename) throws IOException {
ObjectOutputStream objstream = new ObjectOutputStream(new FileOutputStream(filename));
objstream.writeObject(daSerializzare);
objstream.close();
}
/**
* @param filename '''''String''''' - Il nome del file che contiene l'oggetto serializzato
*/
public static Object deserializza(String filename) throws Exception {
ObjectInputStream objstream = new ObjectInputStream(new FileInputStream(filename));
Object oggettoDeserializzato = objstream.readObject();
objstream.close();
return oggettoDeserializzato;
}
/**
* @param args '''''String[]''''' - gli argomenti della riga di comando
*/
public static void main(String[] args) {
Vector v;
try {
v = (Vector) deserializza("Amici.ser"); //cerca di caricare un Vector dal file Amici.ser
System.out.println("Ho letto: "+v);
} catch(Exception e) {
//Nel caso non riesco a leggere il file, allora provo a crearlo
System.out.println("File non trovato. Creazione in corso.");
v = new Vector();
v.addElement("Pietro");
v.addElement("Giovanni");
v.addElement("Matteo");
System.out.println("Ho creato: "+v);
}
try {
serializza(v, "Amici.ser"); //Serializza il Vector nel file Amici.ser
System.out.println("Ho salvato: "+v);
} catch(Exception e) {
System.out.print("Errore nel salvataggio del file: ");
e.printStackTrace();
}
}
}
|