功能简介
PushBackReader容许将字符推回到流的字符流 reader
PushBackReader 是一个装饰器模式最寻常的样子 FilterReader 是抽象的装饰器模式 Decoder Reader是抽象构建 Component PushbackReader是具体的装饰器类 ConcreteDecoder 其余的具体的Reader的子类,则是须要具体装饰的对象 |
|
 FilterReader就是为了抽象的Decorator而存在的 它内部有一个Reader in 而后全部的其余方法都是无差异的转发到了in上 有兴趣的能够过去看下源码(1.8 如此) |
还记得PushBackInputStream中的原理么?
内部维护了一个数组,用来保存记录 被回退掉的数据
PushBackReader的原理也是同样的
对照下字段就能够发现端倪
同PushBackInputStream 同样,他也是从后往前存放的
初始时,缓冲区为空 pos == length
随着元素的增长,pos的位置往前移动
缓冲区一旦写满,将会抛出异常
总结
PushBackReader 与 PushBackInputStream实现的原理是同样的
并且,并且,里面的不少方法的代码(jdk1.8下)
都是几乎同样的,都是几乎同样的,都是几乎同样的
本文说的有些粗,由于不少代码逻辑同PushBackInputStream
因此有兴趣的,请参看以前PushBackInputStream 的介绍
若是不想深刻,只须要清楚:
PushBackReader 是使用了装饰器模式
内部有一个缓存区用来存储被回退掉的内容
若是内容满了不支持继续回退写缓存,会抛出异常
读取的时候先从这个回退的缓冲区中读取数据,而后再考虑从流中读取