哎,被这个问题,弄了好久,发现就是没读懂api,中文api死坑死坑的,唉不说了
按照网上其他说法,mark参数readlimt,没什么用,其实并不是,当bis.read(),执行次数超过size和readlimt,就会报错,具体如下
package com.buffer.test;
package com.buffer.test;
import java.io.BufferedInputStream;
import java.io.ByteArrayInputStream;
import java.io.IOException;
public class TestMark {
public static void main(String[] args) {
try {
byte[] bytes={1,2,3,4,5};
ByteArrayInputStream in=new ByteArrayInputStream(bytes);
BufferedInputStream bis=new BufferedInputStream(in,3); //# size
System.out.println(bis.read()+",");
bis.mark(3); //# readlimit
//此处mark,参数为3
System.out.println(bis.read()+","); //往下读两条,没关系,既没有超size,也没有readlimit
//既不会报错
System.out.println(bis.read()+",");
System.out.println("Firstreset");
bis.reset();
System.out.println(bis.read()+",");
System.out.println(bis.read()+",");
System.out.println(bis.read()+",");
System.out.println(bis.read()+","); //往下读两条,没关系,既没有超size,也没有readlimit
//既不会报错
System.out.println("Secondreset");
bis.reset();
/*
* 读者更改size(十五行),readlimit(十七行),查看控制台
*/
System.out.println("reset again");
bis.reset();
} catch (IOException e) {
e.printStackTrace();
}
}
}