實現類對象的序列化/反序列化

序列化與反序列化處理

有了序列化的支持類後,若是想要實現序列化和反序列化操做則能夠利用如下兩個類完成。
序列化:ObjectOutputStream:java

類定義:public class ObjectOutputStream extends OutputStream implements ObjectOutput, ObjectStreamConstants

構造方法:
    public ObjectOutputStream(OutputStream out) throws IOException
操做方法:
    public final void writeObject(Object obj) throws IOException

反序列化:ObjectInputStream:數組

類定義:public class ObjectInputStream extends InputStream implements ObjectInput,ObjectStreamConstants

構造方法:
    public ObjectInputStream(InputStream in) throws IOException
操做方法:
    public final Object readObject() throws IOException, ClassNotFoundException

範例:實現序列化與反序列化ide

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
@SuppressWarnings("serial")
class Person implements Serializable {//Person類能夠被序列化
    private String name;
    private int age;
    public Person(String name, int age) {
        this.name = name;
        this.age = age;
    }
    @Override public String toString() {
        return "姓名:" + this.name + "、年齡:" + this.age;
    }
}
public class JavaAPIDemo {
    private static final File SAVE_FILE=new File("D:" + File.separator + "mldn.person");
    public static void main(String[] args) throws Exception {
        //saveObject(new Person("小噴嚏",78));
        System.out.println(loadObject());
    }
    public static void saveObject(Object obj)throws Exception{
        ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream(SAVE_FILE));
        oos.writeObject(obj);  //序列化
        oos.close();
    }
    public static Object loadObject()throws Exception{
        ObjectInputStream ois=new ObjectInputStream(new FileInputStream(SAVE_FILE));
        Object obj= ois.readObject();   //反序列化
        ois.close();
        return obj;
    }
}

在Java中的對象序列化與反序列化必須使用內部提供的對象操做流,由於這裏面牽扯到了二進制數據的格式,因此不能自定義處理,另外若是要想實現一組對象的序列化,則能夠使用對象數組完成。this

在不少的實際項目開發過程之中,開發者不多能見到ObjectOutputStream、ObjectInputStream類的直接操做,由於會有一些容器幫助開發者自動實現。spa

相關文章
相關標籤/搜索