[IO] JavaIO之PushbackReader(二十四)

编程语言 编程语言 1808 人阅读 | 0 人回复

功能简介

PushBackReader允许将字符推回到流的字符流 reader

PushBackReader 是一个装饰器模式最寻常的样子 FilterReader 是抽象的装饰器模式 Decoder Reader是抽象构建 Component PushbackReader是具体的装饰器类 ConcreteDecoder 其他的具体的Reader的子类,则是需要具体装饰的对象

image.png

image.png

FilterReader就是为了抽象的Decorator而存在的 它内部有一个Reader in 然后所有的其他方法都是无差别的转发到了in上 有兴趣的可以过去看下源码(1.8 如此)

还记得PushBackInputStream中的原理么? 内部维护了一个数组,用来保存记录 被回退掉的数据 PushBackReader的原理也是一样的

对照下字段就可以发现端倪

image.png

同PushBackInputStream 一样,他也是从后往前存放的 初始时,缓冲区为空 pos == length 随着元素的增加,pos的位置往前移动

缓冲区一旦写满,将会抛出异常

image.png

总结

PushBackReader 与 PushBackInputStream实现的原理是一样的

而且,而且,里面的很多方法的代码(jdk1.8下)

都是几乎一样的,都是几乎一样的,都是几乎一样的

本文说的有些粗,因为很多代码逻辑同PushBackInputStream

所以有兴趣的,请参看之前PushBackInputStream 的介绍

如果不想深入,只需要清楚:

PushBackReader 是使用了装饰器模式

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

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

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

common_log.png 转载务必注明出处:程序员潇然,疯狂的字节X,https://crazybytex.com/thread-160-1-1.html

关注下面的标签,发现更多相似文章

文章被以下专栏收录:

    黄小斜学Java

    疯狂的字节X

  • 目前专注于分享Java领域干货,公众号同步更新。原创以及收集整理,把最好的留下。
    包括但不限于JVM、计算机科学、算法、数据库、分布式、Spring全家桶、微服务、高并发、Docker容器、ELK、大数据等相关知识,一起进步,一起成长。
热门推荐
[若依]微服务springcloud版新建增添加一个
[md]若依框架是一个比较出名的后台管理系统,有多个不同版本。
[CXX1300] CMake '3.18.1' was not
[md][CXX1300] CMake '3.18.1' was not found in SDK, PATH, or
海康摄像头接入 wvp-GB28181-pro平台测试验
[md]### 简介 开箱即用的28181协议视频平台 `https://github.c