首先创建一个JavaBean
package seri;
import java.io.Serializable;
//实现序列化接口
public class Person implements Serializable{
private static final long serialVersionUID = 1L;
private String name;
//如果不让某个字段序列化,就加上transient关键字
//private transient String name;
private Integer age;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public Integer getAge() {
return age;
}
public void setAge(Integer age) {
this.age = age;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
}
package seri;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class Test1 {
//在主方法中测试序列化与反序列化
public static void main(String[] args) throws Exception, Exception {
write();//将内存中 的对象向外写出,叫序列化
read();//从磁盘上将对象读取到内存中,叫反序列化
}
public static void read() throws Exception, IOException {
//创建对象输入流的对象并包装文件输入流,获取文件的地址
ObjectInputStream objectInputStream = new ObjectInputStream(new FileInputStream("E://person.json"));
//文件输入流读取对象
Object readObject = objectInputStream.readObject();
//判断是否是人类对象的实例
if (readObject instanceof Person) {
System.out.println(readObject);
}else {
System.out.println("出错了");
}
objectInputStream.close();
}
public static void write() throws Exception, IOException {
//创建人类对象
Person person = new Person();
//设置人的树形
person.setAge(18);
person.setName("典韦");
//获得对象输出流的对并包装文件输出流,给出输出的位置
ObjectOutputStream objectOutputStream = new ObjectOutputStream(new FileOutputStream("E://person.json"));
//向指定的位置写出对象
objectOutputStream.writeObject(person);
//关闭对象输出流
objectOutputStream.close();
}
}