我完全理解机制标记和重置是如何工作的:但是我想知道为什么从这里获取的以下代码即使我用 br.mark(0) 替换 br.mark(26) 也可以工作。由于参数是要在标记之前读取的字符数。如果我将 0 作为参数,它不应该读取任何内容。相反,它就像我没有改变任何东西一样工作。为什么它会这样?
br = new BufferedReader(isr);
// reads and prints BufferedReader
System.out.println((char)br.read());
System.out.println((char)br.read());
System.out.println((char)br.read());
// mark invoked at this position
br.mark(0);
System.out.println("mark() invoked");
System.out.println((char)br.read());
System.out.println((char)br.read());
System.err.println("The Thing to be said:"+(char)br.read());
// reset() repositioned the stream to the mark
br.reset();
System.out.println("reset() invoked");
System.out.println((char)br.read());
System.out.println((char)br.read());
System.out.println((char)br.read());