PushbackInputStream源代码学习笔记

一、属性

protected byte[] buf;//缓冲数组,用于回滚数据

protected int pos;//缓冲数组的读取位置

二、方法:

read(byte[], int, int)

  先从缓冲区读取数据,不够然后从底层流继续读取。底层流和缓冲区都读不到数据,返回-1.缓冲区读到了数据,就返回缓冲区的读取数量。底层流读到了就把两者读到的数据长度相加返回。

skip(long)

  缓冲区跳过,pos+skipPos。不过,底层继续跳过super.skip();

三、核心

使用了一个数组,实现了回滚数据流。核心方法unread(byte[])、unread(byte[], int, int)和unread(int)。无标志位。

 

Author: bkdwei