Processamento de serialização e desserialização
Com a classe de suporte de serialização, se você deseja implementar operações de serialização e desserialização, pode usar as duas classes a seguir para concluir:
Nome da classe | Serialização: ObjectOutputSteam | Desserialização: ObjectIntputStream |
Definição de classe | public class ObjectOutputStream estende OutputStream implementa ObjectOutput , ObjectStreamConstants |
public class ObjectInputStream estende InputStream implementa ObjectInput , ObjectStreamConstants |
Método de construção | public ObjectOutputStream ( OutputStream out) lança IOException |
public ObjectInputStream ( InputStream in) lança IOException |
Método de operação | public final void writeObject ( Object obj) lança IOException |
public final Object readObject () lança IOException , ClassNotFoundException |
Exemplo: realizar serialização e desserialização
package 序列化;
import java.io.*;
public class 序列化的基本概念{
private static final File SAVE_FILE = new File("D:\\Test\\person.person");
public static void main(String[] args) throws Exception{
//序列化,完成后生成person.person文件
saveObject(new Person("张三",18));
//反序列化
System.out.println(loadObject());
}
public static void saveObject(Object obj) throws Exception{
ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream(SAVE_FILE));
objectOutputStream.writeObject(obj); //序列化
objectOutputStream.close();
}
public static Object loadObject() throws Exception{
ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream(SAVE_FILE));
Object obj = objectInputStream.readObject(); //反序列化
objectInputStream.close();
return obj;
}
}
class Person implements Serializable{ //Person类可以被序列化
private String name;
private int age;
public Person(String name,int age){
this.name = name ;
this.age = age;
}
@Override
public String toString(){
return "姓名:"+this.name+"、年龄:"+this.age;
}
}
Nome: Zhang San, idade: 18
A serialização e a desserialização em java devem usar o fluxo de operação do objeto fornecido internamente, porque envolve o formato de dados binários, então você não pode personalizar o processamento. Se você deseja obter a serialização de um conjunto de pares, você pode usar a matriz de objeto está completo.
No processo de desenvolvimento de muitos projetos reais, os desenvolvedores são mais ou menos capazes de ver essas duas classes, porque muitos contêineres ajudam os desenvolvedores a implementá-los automaticamente.