메커니즘 표시 및 재설정 작동 방법을 완전히 이해합니다. 그러나 다음 코드를 here에서 가져온 이유를 알고 싶습니다. br.mark (26)를 br .mark (0). 매개 변수는 마크보다 앞서 읽을 수있는 문자 수입니다. 인수로 0을 넣으면 아무 것도 읽지 않아야합니다. 대신 그것은 마치 내가 아무것도 바꿀 수없는 것처럼 작동합니다. 왜 그런 식으로 행동합니까?Mark()/Java의 BufferedReader 재설정
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());
http://docs.oracle.com/javase/7/docs/api/java/io/BufferedReader.html#mark(int) -> * 실패 할 수있다. 그럴 것이라고 보장 할 수는 없습니다. 나는 자바의 "어, 그럴지도 모르겠다"는 것을 신경 쓰지 않지만 꽤 일반적이다. –
@BrianRoach 스트림이 재설정되면, 설정 한 한계를 극복 한 마크 이후에 읽혀지는 문자의 양입니다. mark()를 호출하고 다음 read() 호출에서 아무것도 반환하지 않을 때까지 버퍼를 재설정해야합니다. 그러나 그것은 실패합니다. 그래서 앞으로 캐릭터의 한계를 설정하지 못합니까? 그러면 그게 무엇입니까? – Rollerball