Java IO: 序列化與ObjectInputStream、ObjectOutputStream
本小節會簡要概括Java IO中的序列化以及涉及到的流,主要包括ObjectInputStream和ObjectOutputStream。
Serializable
如果你希望類能夠序列化和反序列化,必須實現Serializable介面,就像所展示的ObjectInputStream和ObjectOutputStream例子一樣。
物件序列化本身就是一個主題。Java IO系列教程主要關注流、reader和writer,所以我不會深入探討物件序列化的細節。並且,目前在網上已經有很多文章探討了物件序列化,我將給出幾個深入分析的資料連結,不再贅述。連結如下:
http://java.sun.com/developer/technicalArticles/Programming/serialization/
ObjectInputStream
ObjectInputStream能夠讓你從輸入流中讀取Java物件,而不需要每次讀取一個位元組。你可以把InputStream包裝到ObjectInputStream中,然後就可以從中讀取物件了。程式碼如下:
ObjectInputStream input
=
new
ObjectInputStream
(
new
FileInputStream
(
"object.data"
)
)
;
MyClass object
=
(MyClass
) input
.
readObject
(
)
;
//etc.
input
.
close
(
)
;
在這個例子中,你讀取的物件必須是MyClass的一個例項,並且必須事先通過ObjectOutputStream序列化到“object.data”檔案中。(譯者注:ObjectInputStream和ObjectOutputStream還有許多read和write方法,比如readInt、writeLong等等,詳細資訊請檢視官方文件)
在你序列化和反序列化一個物件之前,該物件的類必須實現了java.io.Serializable介面。
ObjectOutputStream
ObjectOutputStream能夠讓你把物件寫入到輸出流中,而不需要每次寫入一個位元組。你可以把OutputStream包裝到ObjectOutputStream中,然後就可以把物件寫入到該輸出流中了。程式碼如下:
//java學習交流:737251827 進入可領取學習資源及對十年開發經驗大佬提問,免費解答!
ObjectOutputStream output
=
new
ObjectOutputStream
(
new
FileOutputStream
(
"object.data"
)
)
;
MyClass object
=
new
MyClass
(
)
; output
.
writeObject
(object
)
;
//etc.
output
.
close
(
)
;
例子中序列化的物件object現在可以從ObjectInputStream中讀取了。
同樣,在你序列化和反序列化一個物件之前,該物件的類必須實現了java.io.Serializable介面。
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/70010294/viewspace-2844479/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- [java IO流]之 序列化流和反序列化流(ObjectOutputStream/ObjectInputStream)JavaObject
- Java IO框架總攬–ObjectInputStream& ObjectOutputStream原始碼解讀Java框架Object原始碼
- Java I/O 教程(十) ObjectOutputStream和ObjectInputStreamJavaObject
- java.io.EOFException java.io.ObjectInputStream$PeekInputStream.readFully 錯誤JavaExceptionObject
- 【java】ObjectOutputStream & ObjectInputStream 多次寫入發生重複寫入相同資料的問題JavaObject
- Java的序列化與反序列化Java
- Java--序列化與反序列化Java
- Java安全基礎之Java序列化與反序列化Java
- java 序列化與反序列化例項Java
- Java中的序列化與反序列化Java
- Java物件流與序列化Java物件
- Java序列化(Serializable)與反序列化詳解Java
- Java序列化與反序列化(原生方式與Jackson方式)Java
- 深入分析Java的序列化與反序列化Java
- Python 序列化(Python IO)Python
- Java物件的序列化與反序列化-Json篇Java物件JSON
- 【Java基礎】序列化與反序列化深入分析Java
- 12Java進階-IO與XMLJavaXML
- Java IOJava
- Java單例模式與反射及序列化Java單例模式反射
- [java IO流]之 IO概述Java
- Serializable詳解(1):程式碼驗證Java序列化與反序列化Java
- Java面試真題之中級進階(執行緒,程序,序列化,IO流,NIO)Java面試執行緒
- java序列化Java
- 阻塞IO與非阻塞IO
- 序列化與反序列化
- Java IO1:IO和FileJava
- java -IO流Java
- Java IO流Java
- java - IO流Java
- Java IO流Java
- Java IO: 流Java
- Java IO: InputStreamJava
- Java IO: OutputStreamJava
- Java IO初探Java
- Java——IO流Java
- Java序列化、反序列化、反序列化漏洞Java
- 記憶體與IO,磁碟IO,網路IO記憶體