[二十三]JavaIO之PushbackReader


 

功能簡介

 
PushBackReader允許將字符推回到流的字符流 reader
 
PushBackReader 是一個裝飾器模式最尋常的樣子
FilterReader 是抽象的裝飾器模式 Decoder
Reader是抽象構建 Component
PushbackReader是具體的裝飾器類 ConcreteDecoder
其他的具體的Reader的子類,則是需要具體裝飾的對象
image_5b9a5ee6_2212
image_5b9a5ee6_4c6e
FilterReader就是為了抽象的Decorator而存在的
它內部有一個Reader in 然后所有的其他方法都是無差別的轉發到了in上
有興趣的可以過去看下源碼(1.8 如此)
 
還記得PushBackInputStream中的原理么?
內部維護了一個數組,用來保存記錄 被回退掉的數據
PushBackReader的原理也是一樣的
 
對照下字段就可以發現端倪
image_5b9a5ee6_5b4f
 
 
同PushBackInputStream 一樣,他也是從后往前存放的
初始時,緩沖區為空 pos == length
隨着元素的增加,pos的位置往前移動
 
緩沖區一旦寫滿,將會拋出異常
image_5b9a5ee6_902

總結

PushBackReader 與 PushBackInputStream實現的原理是一樣的
而且,而且,里面的很多方法的代碼(jdk1.8下)
都是幾乎一樣的,都是幾乎一樣的,都是幾乎一樣的
 
本文說的有些粗,因為很多代碼邏輯同PushBackInputStream
所以有興趣的,請參看之前PushBackInputStream 的介紹
 
 
如果不想深入,只需要清楚:
PushBackReader 是使用了裝飾器模式
內部有一個緩存區用來存儲被回退掉的內容
如果內容滿了不支持繼續回退寫緩存,會拋出異常 
 
讀取的時候先從這個回退的緩沖區中讀取數據,然后再考慮從流中讀取
 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM