由下面的代码可以得知,这个类的缓冲区默认情况下最大值是8192个字节,也就是说默认情况下能存储8192个字节
public class BufferedInputStream extends FilterInputStream {
private static int DEFAULT_BUFFER_SIZE = 8192;
mark方法mark(N);
:标记当前读取的位置到当前读取的位置+N的这一段数据,如果N小于8192,则将N=8192,所以下面两个代码效果是完全一样的
mark(666);//此处666完全没有起作用,因为小于8192,被8192替代
mark(8192);
我用“N”和“N之后”来表示调用mark方法后的数组样子,如下图
reset方法reset()
:调用reset方法时候,当前读取位置,必须处于N范围之内,例如下面的数组情形就是错误的
而下面图4的数组情形就是正确的
所以当在图4之后,执行了reset之后,再次执行read方法,则会读取到位置4的数据,而不是位置11的数据