According to Java documentation, the readlimit parameter of the mark method in the Class InputStream server for set “the maximum limit of bytes that can be read before the mark position becomes invalid.”.
I have a file named sample.txt whose content is “hello”. And i wrote this code:
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());
}
}
The output is “h”. But if i after the mark method read more than one bytes, shouldn’t i get an error for the invalid reset method call?
I would put this down to documentation error.
The non-parameter doc for
BufferedInputStreamis “See the general contract of the mark method of InputStream,” which to me indicates thatBufferedInputStreamdoes not behave differently, parameter doc notwithstanding.And the general contract, as specified by
InputStream, isIn other words,
readlimitis a suggestion; the stream is free to under-promise and over-deliver.