对象序列化就是把一个对象变为二进制的数据流的一种方法。
通过对象序列化可以方便地实现对象的传输或存储。
如果一个类的对象想被序列化,则对象所在的类必须实现java.io.Serializable接口
//类名:Person_3 //属性: //方法: class Person_3 implements Serializable{ //此类的对象可以被序列化 private String name; private int age; public Person_3(String name, int age) { super(); this.name = name; this.age = age; } @Override public String toString() { return "姓名:" + name + ", 年龄:" + age; } }
此类的对象是可以经过二进制数据流进行传输的
如果要完成对象的输入或者输出,还必须依靠对象输出流(ObjectOutputStream)和对象输入流(ObjectInputStream).
使用对象输出流输出序列化对象的步骤有时也称为序列化
而使用对象输入流读入对象的过程有时也称为反序列化
<1>对象输出流ObjectOutputStream
import java.io.File; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.ObjectOutputStream; import java.io.OutputStream; import java.io.Serializable; //================================================= // File Name : Serializable_demo //------------------------------------------------------------------------------ // Author : Common //类名:Person_3 //属性: //方法: class Person_3 implements Serializable{ //此类的对象可以被序列化 private String name; private int age; public Person_3(String name, int age) { super(); this.name = name; this.age = age; } @Override public String toString() { return "姓名:" + name + ", 年龄:" + age; } } //主类 //Function : Serializable_demo; public class Serializable_demo { public static void main(String[] args) throws Exception { // TODO 自动生成的方法存根 File f = new File("/home/common/software/coding/HelloWord/HelloWord/test.txt");//路径 ObjectOutputStream oos = null; OutputStream out = new FileOutputStream(f); //文件输出流 oos = new ObjectOutputStream(out); //为对象输出流实例化 oos.writeObject(new Person_3("张三", 30)); oos.close(); } }
<2>对象输出流ObjectInputStream
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.InputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.OutputStream; import java.io.Serializable; //================================================= // File Name : Serializable_demo //------------------------------------------------------------------------------ // Author : Common //类名:Person_3 //属性: //方法: class Person_3 implements Serializable{ //此类的对象可以被序列化 private String name; private int age; public Person_3(String name, int age) { super(); this.name = name; this.age = age; } @Override public String toString() { return "姓名:" + name + ", 年龄:" + age; } } //主类 //Function : Serializable_demo; public class Serializable_demo { public static void main(String[] args) throws Exception { // TODO 自动生成的方法存根 File f = new File("/home/common/software/coding/HelloWord/HelloWord/test.txt");//路径 ObjectInputStream ois = null; InputStream input = new FileInputStream(f); //文件输入流 ois = new ObjectInputStream(input); //为对象输入流实例化 Object obj = ois.readObject(); //读取对象 ois.close(); System.out.println(obj); } }