天天看點

ObjectOutputStream 和 ObjectInputStream的使用

一、看一下API文檔

ObjectOutputStream :

ObjectOutputStream 将 Java 對象的基本資料類型和圖形寫入 OutputStream。可以使用 ObjectInputStream 讀取(重構)對象。通過在流中使用檔案可以實作對象的持久存儲。如果流是網絡套接字流,則可以在另一台主機上或另一個程序中重構對象。

隻能将支援 java.io.Serializable 接口的對象寫入流中。每個 serializable 對象的類都被編碼,編碼内容包括類名和類簽名、對象的字段值和數組值,以及從初始對象中引用的其他所有對象的閉包。

writeObject 方法用于将對象寫入流中。所有對象(包括 String 和數組)都可以通過 writeObject 寫入。可将多個對象或基元寫入流中。必須使用與寫入對象時相同的類型和順序從相應 ObjectInputstream 中讀回對象。

還可以使用 DataOutput 中的适當方法将基本資料類型寫入流中。還可以使用 writeUTF 方法寫入字元串。

對象的預設序列化機制寫入的内容是:對象的類,類簽名,以及非瞬态和非靜态字段的值。其他對象的引用(瞬态和靜态字段除外)也會導緻寫入那些對象。可使用引用共享機制對單個對象的多個引用進行編碼,這樣即可将對象的圖形恢複為最初寫入它們時的形狀。

ObjectInputStream :

ObjectInputStream 對以前使用 ObjectOutputStream 寫入的基本資料和對象進行反序列化。

ObjectOutputStream 和 ObjectInputStream 分别與 FileOutputStream 和 FileInputStream 一起使用時,可以為應用程式提供對對象圖形的持久存儲。ObjectInputStream 用于恢複那些以前序列化的對象。其他用途包括使用套接字流在主機之間傳遞對象,或者用于編組和解組遠端通信系統中的實參和形參。

ObjectInputStream 確定從流建立的圖形中所有對象的類型與 Java 虛拟機中顯示的類相比對。使用标準機制按需加載類。

隻有支援 java.io.Serializable 或 java.io.Externalizable 接口的對象才能從流讀取。 

二、案例說明

下面以一個例子來說明:

首先定義一個學生類,主要用于後面的封裝。

然後把serializtion寫上就可以了。

最後會輸出:

name:張三 id:1

age:20 department:資料結構

name:李四 id:2

age:19 department:網絡