序列化流与反序列化流
序列化是把对象特性保存到物理介质上,反序列化是把保存在物理介质上的对象取出还原成对象。
能被序列化的对象所属的类必须实现Serializable接口。
1、对象序列化流ObjectOutputStream
构造方法:
ObjectOutputStream(OutputStream out):创建写入指定OutputStream的ObjectOutputStream
方法:
void writeObject(Object obj):将指定的对象写入ObjectOutputStream
Person类
1 package io; 2 3 import java.io.Serializable; 4 5 public class Person implements Serializable { 6 private String name; 7 private int age; 8 9 public Person() { 10 super(); 11 } 12 13 public Person(String name, int age) { 14 super(); 15 this.name = name; 16 this.age = age; 17 } 18 19 public String getName() { 20 return name; 21 } 22 23 public void setName(String name) { 24 this.name = name; 25 } 26 27 public int getAge() { 28 return age; 29 } 30 31 public void setAge(int age) { 32 this.age = age; 33 } 34 35 @Override 36 public String toString() { 37 return "Person [name=" + name + ", age=" + age + "]"; 38 } 39 40 }
1 package io; 2 3 import java.io.FileOutputStream; 4 import java.io.IOException; 5 import java.io.ObjectOutputStream; 6 7 public class ObjectOutputStreamDemo { 8 9 public static void main(String[] args) throws IOException { 10 // 创建关联数据源的字节输出流对象 11 FileOutputStream fos = new FileOutputStream("e:\\javaIOTest\\per.txt"); 12 // 给操作文件的字节输出流添加写入对象功能 13 ObjectOutputStream oos = new ObjectOutputStream(fos); 14 // 调用写入对象方法 15 oos.writeObject(new Person("alphajuns", 23)); 16 // 关闭资源 17 oos.close(); 18 } 19 20 }
2、对象反序列化流ObjectInputStream
构造方法:
ObjectInputStream(InputStream in):创建从指定InputStream读取的ObjectInputStream
方法:
readObject():从ObjectInputStream读取对象
1 package io; 2 3 import java.io.FileInputStream; 4 import java.io.IOException; 5 import java.io.ObjectInputStream; 6 7 public class ObjectInputStreamDemo { 8 9 public static void main(String[] args) throws IOException, ClassNotFoundException { 10 // 创建关联数据源的字节输入流 11 FileInputStream fis = new FileInputStream("e:\\javaIOTest\\per.txt"); 12 // 创建读取对象的反序列化流 13 ObjectInputStream ois = new ObjectInputStream(fis); 14 // 读取对象 15 Person obj = (Person) ois.readObject(); 16 System.out.println(obj.toString()); 17 // 关闭资源 18 ois.close(); 19 } 20 21 }