序列化--是指把java程序中的对象永久区存储在磁盘中的过程,可以看做是一个out的过程
反序列化--是指从磁盘中恢复一个被序列化好的文件,可以看成是一个in的过程
序列化工具类ObjectOutputStream
反序列化工具类ObjectInputStream
实例代码:
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
public class Test7_Seri {
public static void main(String[] args) {
// method();// 序列化--是指把java程序中的对象永久区存储在磁盘中的过程,可以看做是一个out的过程
method2();//反序列化--是指从磁盘中恢复一个被序列化好的文件,可以看成是一个in的过程
}
private static void method2() {
try {
ObjectInputStream in = new ObjectInputStream(new FileInputStream("E:\\iotest\\1.txt"));
Object obj = in.readObject();
System.out.println(obj);
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
private static void method() {
try {
//1.序列化工具类ObjectOutputStream
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("E:\\iotest\\1.txt"));
//2.序列化
Student s = new Student("jack",10,"北京");
out.writeObject(s);
//3.释放资源
out.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
class Student implements Serializable{
private static final long serialVersionUID = 1L;
// 创建对象用
public Student(String name, int age, String addr) {
this.name = name;
this.age = age;
this.addr = addr;
}
// 一般序列化的都是属性
String name = "张三";
int age = 20;
String addr = "成都";
// 为了看属性值
@Override
public String toString() {
return "Student [name=" + name + ", age=" + age + ", addr=" + addr + "]";
}
}
注意:被序列化的类必须实现一个接口Serializable