天天看點

java 序列化與反序列化

1.序列化:

将java對象轉化為位元組序列

2.反序列化:

将位元組序列恢複成java對象

3.序列化是幹什麼的:

1.儲存在記憶體中的對象的狀态

2.友善傳輸,實作對象的位元組序列傳輸,如圖像,視訊等

4.實作

java提供兩種方式一種是實作serializable接口,另一種是實作exteranlizable接口,使用serializable時可利用transient關鍵子修飾不需要被反序列化的屬性,使用exteranlizable接口時需要重寫writeexternal和readexternal方法

java 序列化與反序列化

user類實作serializable接口,實際為空接口,作為可反序列化辨別

java 序列化與反序列化

exteranlizable類繼承了serializable需要實作writeexternal和readexternal方法,注意使用此方法時,若類沒有預設構造函數會報錯

java 序列化與反序列化

objectoutputstream 對象輸出流 objectinputstream 對象輸入流

fileoutputstream 檔案輸出流 fileinputstream 檔案輸入流

利用兩者将對象的序列化資料寫入檔案,再從檔案中讀取序列化資料利用readobject恢複成對象

test類代碼如下:

運作serialize()在1.txt中儲存序列化資料

java 序列化與反序列化

運作deserializ()将序列化資料反序列化為對象

java 序列化與反序列化