一、什么是序列化和反序列化?
序列化是一种将对象以一连串的字节描述的过程。反序列化是将这些字节重建成一个对象的过程。
二、序列化和反序列化如何实现?
1、编写一个类,实现Serializable
package com.tcp.test;
import java.io.Serializable;
public class Student implements Serializable{
private static final long serialVersionUID = 1L;
private String name;
private String sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
2、序列化:使用java.io.ObjectOutputStream的writeObject()方法传入对象进行序列化。
/**
* 序列化
* @param student 序列化目标
* @param fileName 序列化文件名
* @param path 序列化位置
*/
public static void writeObject(Student student, String fileName,
String path) {
try {
ObjectOutputStream outputStream = new ObjectOutputStream(
new BufferedOutputStream(new FileOutputStream(path + "/"
+ fileName)));
outputStream.writeObject(student);
System.out.println("OK~~~");
outputStream.close();
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
3、 反序列化:使用java.io.ObjectInputStream的readObject()方法进行反序列化
/**
* 反序列化
* @param path 目标路径
* @return
*/
public static Object readObject(String path) {
try {
ObjectInputStream inputStream = new ObjectInputStream(
new BufferedInputStream(new FileInputStream(path)));
Object object = inputStream.readObject();
inputStream.close();
if (null != object)
return object;
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
注意:实体类不实现Serializable会报 java.io.NotSerializableException! 图下