序列化与反序列化实例

首先创建一个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();
}

}

发布了25 篇原创文章 · 获赞 4 · 访问量 718

猜你喜欢

转载自blog.csdn.net/qq_43149023/article/details/97291839