欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

[二十三]JavaIO之PushbackReader

程序员文章站 2022-04-06 13:12:24
功能简介 PushBackReader允许将字符推回到流的字符流 reader PushBackReader 是一个装饰器模式最寻常的样子FilterReader 是抽象的装饰器模式 DecoderReader是抽象构建 ComponentPushbackReader是具体的装饰器类 Concret ......
 

功能简介

 
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 是使用了装饰器模式
内部有一个缓存区用来存储被回退掉的内容
如果内容满了不支持继续回退写缓存,会抛出异常 
 
读取的时候先从这个回退的缓冲区中读取数据,然后再考虑从流中读取