序列化與反序列化

1.序列化的概念:
    序列化就是將對象的狀態存儲到特定的存儲介質中的過程,也就是將對象的狀態轉換爲可保持或傳輸格式的過程.在序列化的過程中,會將對象的公有成員/私有成員包括類名,轉換爲字節流,然後再把字節流寫入到數據流,存儲到存儲介質中,這裏說的存儲介質通常是指文件.
    使用序列化的意義在於java對象序列化後,可以將其轉換爲字節序列,這些字節序列可以被保存在磁盤上,也可以藉助網絡進行傳輸,同時序列化後的對象保存的是二進制狀態,這樣實現了平臺無關性.
    對象序列化的步驟很簡單,可以分爲兩大步:
    1) 創建一個對象輸出流(ObjectOutputStream),它可以包裝一個其他類型的輸出流,如文件輸出流FileOutputStream.
    ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(path));
    2) 通過對象輸出流的writeObject(Object object)方法寫對象,也就是輸出可序列化對象.
    oos.writeObject(Object object);
    注意:java中只有實現了java.io.Serializable接口的對象才能被序列化.   

2..反序列化的概念:
    序列化是將對象的狀態信息保存到存儲介質中(輸出/寫),反序列化則是從特定的存儲介質中將數據重新構建對象的過程(輸入/讀).通過反序列化,可以將存儲在文件上的對象信息讀取,然後重新構建爲對象.
    反序列化的步驟大致概括爲兩步:
    1)創建一個對象輸入流(ObjectInputStream),它可以包裝一個其他類型的輸入流,如文件輸入流FileInputSInputStream
    ObjectInputStream ois = new ObjectInputStream(new FileInputStream(path));
    2)通過對象輸入流的readObject()方法讀取該對象,方法返回一個Object對象,如果java知道該java對象的類型,則可以將該對象強制轉換成其真實類型.
    Object obj = ois.readObject;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章