1. Java -Serialisierung und Deserialisierung
Die Java -Serialisierung bezieht sich auf den Prozess der Konvertierung von Java -Objekten in Byte -Sequenzen. Die Java -Deserialisierung bezieht sich auf den Prozess der Wiederherstellung der Byte -Sequenzen in Java -Objekte.
2. Warum Serialisierung und Deserialisierung erforderlich sind
Wir wissen, dass zwei Prozesse, die remote kommunizieren, verschiedene Arten von Daten aneinander senden können, einschließlich Text, Bilder, Audio, Video usw., und diese Daten werden in Form von binären Sequenzen im Netzwerk übertragen. Wenn also zwei Java -Prozesse kommunizieren, kann die Objektübertragung zwischen den Prozessen realisiert werden? Die Antwort lautet ja. Wie macht ich das? Dies erfordert Java -Serialisierung und -Deserialisierung. Mit anderen Worten, einerseits muss der Absender dieses Java -Objekt in eine Abfolge von Bytes umwandeln und dann im Netzwerk übertragen. Andererseits muss der Empfänger das Java -Objekt aus der Abfolge von Bytes wiederherstellen.
Wenn wir verstehen, warum Java -Serialisierung und -Deserialisierung erforderlich sind, denken wir natürlich über die Vorteile der Java -Serialisierung nach. Die Vorteile sind zunächst, dass die Datenpersistenz realisiert werden. Durch die Serialisierung können die Daten dauerhaft auf der Festplatte gespeichert werden (normalerweise in einer Datei gespeichert). Zweitens wird die Serialisierung verwendet, um die Remote -Kommunikation zu realisieren, dh die Übertragung der Byte -Sequenz von Objekten im Netzwerk.
3. Beispiel:
(1) Serialisieren und Deserialisieren von Dateien:
import Java.io.*; @SuppressWarnings ("Serielle") Klasse implementiert serialisierbare {public Person (String -Name, String -Sex, int Alter, int Höhe) {this.name = name; this.sex = sex; this.age = Alter; this.height = Höhe; } public String toString () {return "|" + this.name + "|" + this.sex + "|" + this.age + "|" + this.height + "|"; } öffentlicher String -Name; öffentlicher String Sex; öffentliches int Alter; öffentliche int Höhe; } public class serialTest {public static void main (String [] args) löst FilenotFoundException, ioException, classNotFoundException aus {Person p = new Person ("jim", "männlich", 28, 194); // serialisieren objektOutputStream OOS = new ObjectOutputStream (neuer FileOutputStream (neue Datei ("myTest.txt")); oos.writeObject (p); // Deerializize ObjectInputStream ois = new ObjectInputStream (neuer FileInputStream (neue Datei ("myTest.txt")); Person p1 = (Person) ois.ReadObject (); System.out.println (p1.toString ()); }}
(2) XML -Deserialisierung in die Klasse:
import Java.io.*; com.thoughtworks.xstream.xstream; com.thoughtworks.xstream.io.xml.DomDriver; @SuppressWarnings ("Serial") Klasse RoadInfo implementiert serialisierbare {public int id; Öffentliche lange MDN; öffentlicher String -Name; öffentliches Doppel -LNG; öffentliches Doppel -Lat; öffentliches String -Symbol; } @SuppressWarnings ("Serial") class Table_List implementiert serialisierbare {public String toString () {StringBuffer sb = new StringBuffer (); für (roadInfo r: sequence) {sb.append ("|"); Sb.Append (R.ID); sb.Append ("|"); sb.Append (R.Mdn); sb.Append ("|"); Sb.Append (R.Name); sb.Append ("|"); Sb.Append (R.Lng); sb.Append ("|"); Sb.Append (R.Lat); sb.Append ("|"); Sb.Append (R.Icon); sb.Append ("|/n"); } return sb.toString (); } public table_list (int count) {sequence = new RoadInfo [count]; für (int i = 0; i <count; i ++) {Sequence [i] = new RoadInfo (); }} public roadInfo [] Sequenz; } public class xmltest { / ** * @param args * / public static void main (string [] args) löst eine Ausnahme aus {// Todo automatisch generierte Methode Stub StringBuffer SB = new StringBuffer (); BufferedReader reader = new bufferedReader (neuer fileReader (neue Datei ("friend_msg.xml")); while (true) {string s = reader.readline (); // eine Zeile lesen if (s == null) {break; } SB.Append (s); } Xstream xs = new Xstream (neuer Domdriver ()); table_list db = (table_list) xs.fromxml (sb.toString ()); System.out.println (db.toString ()); }}