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】ObjectOutputStream & ObjectInputStream 多次寫入發生重複寫入相同資料的問題JavaObject
- IO流的Properties集合,序列化流與反序列化流,列印流及commons-IO
- Java的序列化與反序列化Java
- Python 序列化(Python IO)Python
- Java安全基礎之Java序列化與反序列化Java
- Java中的序列化與反序列化Java
- IO流(3) - 序列化和反序列化
- Java物件的序列化與反序列化-Json篇Java物件JSON
- 12Java進階-IO與XMLJavaXML
- IO流(03)--序列化流、列印流
- [java IO流]之 IO概述Java
- Java單例模式與反射及序列化Java單例模式反射
- Serializable詳解(1):程式碼驗證Java序列化與反序列化Java
- Java IO學習筆記二:DirectByteBuffer與HeapByteBufferJava筆記
- java -IO流Java
- Java IO流Java
- Java IO: 流Java
- Java IO: InputStreamJava
- Java IO: OutputStreamJava
- Java IO流Java
- java - IO流Java
- 阻塞IO與非阻塞IO
- java序列化Java
- Java面試真題之中級進階(執行緒,程序,序列化,IO流,NIO)Java面試執行緒
- Java序列化、反序列化、反序列化漏洞Java
- 序列化與反序列化
- Java 非阻塞 IO 和非同步 IOJava非同步
- 記憶體與IO,磁碟IO,網路IO記憶體
- 關於Java IO與NIO知識都在這裡Java
- 如何用Java與python程式碼解釋IO模型JavaPython模型
- 什麼是Java序列化,如何實現java序列化Java
- Java的序列化和反序列化Java
- Java IO 和 NIOJava
- Java IO實踐Java
- Java的IO流Java
- [Java基礎]IOJava