Procesamiento de serialización y deserialización
Con la clase de soporte de serialización, si desea implementar operaciones de serialización y deserialización, puede usar las siguientes dos clases para completar:
Nombre de la clase | Serialización: ObjectOutputSteam | Deserialización: ObjectIntputStream |
Definición de clase | ObjectOutputStream de clase pública extiende OutputStream implementa ObjectOutput , ObjectStreamConstants |
La clase pública ObjectInputStream extiende InputStream implementa ObjectInput , ObjectStreamConstants |
Método de construcción | public ObjectOutputStream ( OutputStream out) lanza IOException |
Public ObjectInputStream ( InputStream in) lanza IOException |
Método de operación | public final void writeObject ( Object obj) lanza IOException |
Objeto final público readObject () lanza IOException , ClassNotFoundException |
Ejemplo: realizar serialización y deserialización
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;
}
}
Nombre: Zhang San, edad: 18
La serialización y deserialización en Java debe usar el flujo de operaciones de objetos proporcionado internamente, ya que implica el formato de datos binarios, por lo que no puede personalizar el procesamiento. Si desea lograr la serialización de un conjunto de pares, puede usar la matriz de objetos Esta completo.
En el proceso de desarrollo de muchos proyectos reales, los desarrolladores son más o menos capaces de ver estas dos clases, porque muchos contenedores ayudan a los desarrolladores a implementarlos automáticamente.