1. Java serialização e desserialização
A serialização de Java refere -se ao processo de conversão de objetos Java em sequências de bytes; Ameialização de Java refere -se ao processo de restaurar as seqüências de bytes em objetos Java.
2. Por que a serialização e a desserialização são necessárias
Sabemos que quando dois processos se comunicam remotamente, eles podem enviar vários tipos de dados um para o outro, incluindo texto, imagens, áudio, vídeo etc., e esses dados serão transmitidos na rede na forma de seqüências binárias. Então, quando dois processos Java se comunicam, a transmissão de objetos pode ser realizada entre os processos? A resposta é sim. Como fazer isso? Isso requer serialização e deserialização de Java. Em outras palavras, por um lado, o remetente precisa converter esse objeto Java em uma sequência de bytes e depois transmiti -lo na rede; Por outro lado, o receptor precisa restaurar o objeto Java da sequência de bytes.
Quando entendemos por que a serialização e a desserialização de Java são necessárias, pensamos naturalmente nos benefícios da serialização de Java. Os benefícios são primeiro que a persistência dos dados é realizada. Através da serialização, os dados podem ser salvos permanentemente no disco rígido (geralmente armazenados em um arquivo). Em segundo lugar, a serialização é usada para realizar uma comunicação remota, ou seja, transmitindo a sequência de bytes de objetos na rede.
3. Exemplo:
(1) serializar e desserialize arquivos:
importar java.io.*; @Suppresswarnings ("serial") Pessoa implementa serializável {Public Pessoa (nome da string, sexo de string, int ad, int altura) {this.name = name; this.sex = sexo; this.age = idade; this.Height = altura; } public string tostring () {return "|" + this.name + "|" + this.sex + "|" + this.age + "|" + this.Height + "|"; } nome da string pública; sexo público de cordas públicas; INT AGRIBUIL PÚBLICA; altura pública int; } classe pública serialtest {public static void main (string [] args) lança fileNotfoundException, ioexception, classNotFoundException {Pessoa P = new Pessoa ("Jim", "Masculino", 28, 194); // Inicie serializando o objectOutputStream ooS = new ObjectOutputStream (new FileOutputStream (new File ("mytest.txt"))); OOS.WriteObject (P); // Deserialize ObjectInputStream ois = new ObjectInputStream (new FileInputStream (new File ("mytest.txt")))); Pessoa P1 = (Pessoa) OIS.readObject (); System.out.println (p1.toString ()); }}
(2) Deserialização XML na classe:
importar java.io.*; importar com.thoughtworks.xstream.xstream; importar com.thoughtworks.xstream.io.xml.domdriver; @Suppresswarnings ("serial") RoadInfo implementa serializável {public int id; Public Long Mdn; Nome de String Public; Public Double LNG; Public Double Lat; Ícone de String Public; } @Suppresswarnings ("serial") classe tabela_list implementa serializável {public string tostring () {stringbuffer sb = new stringBuffer (); for (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 tabela_list (int conting) {sequence = new RoadInfo [contagem]; for (int i = 0; i <contagem; i ++) {sequência [i] = new RoadInfo (); }} sequência public rotainfo []; } classe pública xmltest { / ** * @param args * / public static void main (string [] args) lança Exceção {// TODO Method Auto-Generated Stub StringBuffer sb = new StringBuffer (); BUBLEREDREADER LEITOR = NEW BUMBERREDERRADER (NEW FileReader (novo arquivo ("FIED_MSG.XML"))); while (true) {string s = reader.readline (); // leia uma linha if (s == null) {break; } sb.append (s); } Xstream xs = new XStream (new Domdriver ()); tabela_list db = (tabela_list) xs.fromxml (sb.toString ()); System.out.println (db.toString ()); }}