[二十三]JavaIO之PushbackReader

功能简介

 

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 是使用了装饰器模式

内部有一个缓存区用来存储被回退掉的内容

如果内容满了不支持继续回退写缓存,会抛出异常 

 

读取的时候先从这个回退的缓冲区中读取数据,然后再考虑从流中读取

 


作者:noteless
 原文出处:https://www.cnblogs.com/noteless/p/9643084.html
本文版权归作者和博客园共有,欢迎转载,转载请注明出处,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。


请使用浏览器的分享功能分享到微信等