根据Java documentation,Class InputStream服务器中mark方法的readlimit参数设置为“在标记位置变为无效之前可以读取的最大字节数”。
我有一个名为sample.txt的文件,其内容为“hello”。我写了这段代码:
import java.io.*;
public class InputStream{
public static void main (String[] args) throws IOException {
InputStream reader = new FileInputStream("sample.txt");
BufferedInputStream bis = new BufferedInputStream(reader);
bis.mark(1);
bis.read();
bis.read();
bis.read();
bis.read();
bis.reset();
System.out.println((char)bis.read());
}
}
输出为“h”。但是,如果我在mark方法之后读取了多个字节,我是否应该为无效的reset方法调用得到一个错误?
最佳答案
我将其归结为文档错误。BufferedInputStream
的非参数doc是“请参阅InputStream的mark方法的常规协定”,对我来说,尽管有参数doc,但BufferedInputStream
的行为没有不同。
并且由InputStream
指定的一般契约(Contract)是
换句话说,readlimit
是一个建议;信息流可以免费兑现 promise 不足和超额转换的情况。