0
点赞
收藏
分享

微信扫一扫

Java-java.io.BufferedInputStream


由下面的代码可以得知,这个类的缓冲区默认情况下最大值是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方法后的数组样子,如下图

Java-java.io.BufferedInputStream_java

reset方法​​reset()​​:调用reset方法时候,当前读取位置,必须处于N范围之内,例如下面的数组情形就是错误

Java-java.io.BufferedInputStream_数据_02

而下面图4的数组情形就是正确的

Java-java.io.BufferedInputStream_set方法_03


所以当在图4之后,执行了reset之后,再次执行read方法,则会读取到位置4的数据,而不是位置11的数据


举报

相关推荐

0 条评论