1 序列化和反序列化
1.1 ObjectOutputStream 序列化
1.1.1 概述
- ObjectOutputStream将Java对象的基本数据写入OutputStream,可以使用ObjectInputStream读取对象。
- 通过在流中使用文件可以实现对象的持久存储。
- 如果流是Socket,则可以在另一台主机上火另一个进程中重构对象。
1.1.2 构造方法
- 创建写入指定OutputStream的ObjectOutputStream
public ObjectOutputStream(OutputStream out) throws IOException
1.1.3 方法
- 将指定对象写入ObjectOutputStream
public final void writeObject(Object obj) throws IOException
1.2 ObjectInputStream 反序列化
1.2.1 概述
- ObjectInputStream对以前使用ObjectOutputStream写入的基本数据和对象进行反序列化。
1.2.2 构造方法
- 创建从指定InputStream读取的ObjectInputStream
public ObjectInputStream(InputStream in) throws IOException
1.2.3 方法
public final Object readObject() throws IOException, ClassNotFoundException
1.3 示例
package java20;
import java.io.Serializable;
/**
* 2017/10/15
* 说明:
*/
public class Person implements Serializable {
private String name;
private int age;
public Person() {
}
public Person(String name, int age) {
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
}
package java20;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
/**
* 2017/10/15
* 说明:
*/
public class ObjectOutputStreamDemo {
public static void main(String[] args) throws IOException {
ObjectOutputStream os = new ObjectOutputStream(new FileOutputStream("person.txt"));
os.writeObject(new Person("张三",50));
os.close();
}
}
package java20;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
/**
* 2017/10/15
* 说明:
*/
public class ObjectInputStreamDemo {
public static void main(String[] args) throws IOException, ClassNotFoundException {
ObjectInputStream oi = new ObjectInputStream(new FileInputStream("person.txt"));
Person p = (Person) oi.readObject();
System.out.println(p.getName());
System.out.println(p.getAge());
}
}