基本類型的序列化 writeInt() readInt()
照片的序列化 ImageIO.read() ImageIO.write()
1 字符串的序列化 編碼問題
println()
readLine()
2 對象的序列化
readObject()
writeObject()
常見文本文件讀取方式
對象的序列化
流的總結(jié)
廣義上: 數(shù)據(jù)轉(zhuǎn)換為byte 序列 都是序列化
int long 可以序列化 -> 拆分
String 可以序列化 --> 編碼
Image 可以序列化(.png) -> 圖片的壓縮格式
對象(屬性)可以序列化 對象編碼為 byte 序列
7 什么是對象的序列化: 將Object轉(zhuǎn)換為byte序列,就是序列化,反之叫反序列化
為什么要序列化: 為了在byte流中存儲對象
如何序列化: 使用writeObject(Object)/readObject()
1) 序列化流, 是過濾流
ObjectOutputStream writeObject(Object) 序列化對象
ObjectInputStream readObject() 對象的反序列化
2) 序列化接口: 對象必須實現(xiàn)"序列化接口"才能進行 "序列化"
否則出現(xiàn)不能序列化的異常!
3) JavaBean 規(guī)范, 必須實現(xiàn)Serializable接口
Java API中的類大多是Java Bean, 基本都實現(xiàn)了Serializable
序列化的應(yīng)用:
8 淺層復(fù)制與深層復(fù)制
1) Java的默認(rèn)復(fù)制規(guī)則是淺層復(fù)制, 性能好, 隔離性差
淺層復(fù)制現(xiàn)象, 只復(fù)制第一層對象
2) 利用序列化實現(xiàn)深層復(fù)制
.Java IO 總結(jié)
1)是一種數(shù)據(jù)操作模型: 把任何數(shù)據(jù)都作為Byte的有序集合看待
逐一處理的方式方式叫做流.
Java 流模型, 是byte by byte 是數(shù)據(jù)集合
data : 41 42 00 00 ff ff d6 d0
index : 0 1 2 3 4 5 6 7 8
pointer: ^
RandomAccessFile 只能操作文件, 只能處理基本類型
節(jié)點流: 流開始和結(jié)束的地方
過濾器: 基本流的功能擴展
字節(jié)流: 每次處理一個byte
字符流: 每次出來一個char
ObjectInputStream in = new ObjectInputStream(new CipherInputStream(new FileInputStream(file)));
Object obj = in.readObject();
CipherInputStream in = new CipherInputStream(new FileInputStream(file));
img = ImageIO.read(in);
裝飾器模式: 流的API是按照裝飾器模式設(shè)計的
InputStream 最基本的輸入流操作模型, 是抽象類(read()是沒有實現(xiàn)的)
|-- FileInputStream 實現(xiàn)了在文件上讀取的方法 read(), 節(jié)點流
|-- ByteArrayInputStream 實現(xiàn)了在數(shù)組里讀取的方法 read()
|-- FilterInputStream 過濾流,包裝在一個基本流外部,提供功能擴展
| |-- DataInputStream 為基本流擴展了基本數(shù)據(jù)類型讀取
| | readInt() readDouble()...方法的底層是read()
| |-- BufferedInputStream 為基本流提供緩沖處理
| |-- CipherInputStream 解密輸入流, 知道就行
| |-- ZipInputStream 解壓輸入流, 知道就行
|-- ObjectInputStream 對象輸入流, 也是過濾器
OutputStream 最基本的輸出流操作模型,是抽象類(write()是沒有實現(xiàn)的)
|-- FileOutputStream 實現(xiàn)了在文件上寫出的方法 write(), 節(jié)點流
|-- ByteArrayOutputStream 在變長數(shù)組上實現(xiàn)了write() 方法
|-- FilterOutputStream
| |-- DataOutputStream 基本類型輸出
| |
| |-- BufferedOutputStream 緩沖輸出
| |-- CipherOutputStream 加密輸出
| |-- ZipOutputStream 壓縮輸出
|-- ObjectOutputStream 對象輸出流
字符流, 每次處理一個字符
Reader 抽象類, 定義了抽象方法read(), 每次讀取一個字符
|-- InputStreamReader 也是過濾器, 將byte序列解碼為char序列
| 底層也是依賴基本的byte輸入流
|-- BufferedReader (Scanner) 是字符流過濾器,
| 有常用的文本讀取方法readLine()
|-- FileReader 底層是 FileInputSream + InputStreamReader
| 不能指定讀取文件的字符編碼
全國職稱計算機考試速成過關(guān)系列套裝:W .. 定價:¥133 優(yōu)惠價:¥133.0 更多書籍 | |
全國職稱計算機考試速成過關(guān)系列套裝:W .. 定價:¥124 優(yōu)惠價:¥124.0 更多書籍 |