一、属性
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)。无标志位。