目录
pojo实体类 实现Serializable接口开启这个类的可序列化功能
Serializable类 标记接口,被标记的pojo实体类就可以序列化,会给编译后的.class文件计算一个序列号
关于Serializable的博客
https://www.cnblogs.com/yoohot/p/6019767.html
实体类
package cn.bufanli.pojo;
import java.io.Serializable;
/**
* @author BuShuangLi
* @date 2018/12/27
*/
public class Person implements Serializable {
/**
* 自定义序列号
*/
private static final long serialVersionUID = 1L;
private String name;
private String age;
/**
* transient 阻止成员变量静态化
*/
private transient String money;
public Person(String name, String age, String money) {
this.name = name;
this.age = age;
this.money = money;
}
public Person(){}
@Override
public String toString() {
return "Person{" +
"name='" + name + '\'' +
", age='" + age + '\'' +
", money='" + money + '\'' +
'}';
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getAge() {
return age;
}
public void setAge(String age) {
this.age = age;
}
public String getMoney() {
return money;
}
public void setMoney(String money) {
this.money = money;
}
}
代码
package cn.bufanli.iodemo;
import cn.bufanli.pojo.Person;
import java.io.*;
/**
* @author BuShuangLi
* @date 2018/12/27
* 序列化 用于向流中写入对象的操作流程
* ObjectOutputStream
* 特点: 用于操作对象可以将对象写入到文件中
* 反序列化
* ObjectInputStream
* 特点: 用于操作对象可以从文件中读取对象
*/
public class ObjectStreamDemo {
public static void main(String[] args) throws IOException, ClassNotFoundException {
/**
* 序列化
*/
objectOutputStream();
/**
* 反序列化
*/
objectInputStream();
}
/**
* 序列化
* 构造方法 ObjectOutputStream(OutputStream out)
* 传递任意的字节输出流即可
* 写出对象的方法
*
*/
private static void objectOutputStream() throws IOException {
//创建字节输出流
FileOutputStream fileOutputStream = new FileOutputStream(new File("F:\\person.txt"));
//创建写出对象的序列化流 传入创建的字节输出流对象
ObjectOutputStream objectOutputStream = new ObjectOutputStream(fileOutputStream);
Person person = new Person();
person.setName("张三");
person.setAge("12");
person.setMoney("1231");
objectOutputStream.writeObject(person);
objectOutputStream.close();
}
/**
* 反序列化,和序列话套路一样
*/
private static void objectInputStream() throws IOException, ClassNotFoundException {
FileInputStream fileInputStream = new FileInputStream(new File("F:\\person.txt"));
ObjectInputStream objectInputStream = new ObjectInputStream(fileInputStream);
//需要抛一个异常
Object o = objectInputStream.readObject();
System.out.println(o);
}
}
控制台