对象序列化就是把一个对象变为二进制的数据流的一种方法。
通过对象序列化可以方便地实现对象的传输或存储。
如果一个类的对象想被序列化,则对象所在的类必须实现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);
}
}