根据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 不足和超额转换的情况。

10-06 01:25