다른 방법으로 내 oroginal BufferReader
두 BufferedReader
의를 작성하여 그것을 해결의 더 똑 바른 앞으로 방법이 없습니다에 영향을주지 않고 새로운 bufferReader을 만들 수 있습니다. (두 독자는 동일한 소스의 데이터를 소비합니다.) 소스에 버퍼링 수준을 추가해야 각 독자가 스트림을 독립적으로 읽을 수 있습니다.
import java.io.*;
import org.apache.commons.io.input.TeeInputStream;
class Test {
public static void main(String[] args) throws IOException {
// Create the source input stream.
InputStream is = new FileInputStream("filename.txt");
// Create a piped input stream for one of the readers.
PipedInputStream in = new PipedInputStream();
// Create a tee-splitter for the other reader.
TeeInputStream tee = new TeeInputStream(is, new PipedOutputStream(in));
// Create the two buffered readers.
BufferedReader br1 = new BufferedReader(new InputStreamReader(tee));
BufferedReader br2 = new BufferedReader(new InputStreamReader(in));
// Do some interleaved reads from them.
System.out.println("One line from br1:");
System.out.println(br1.readLine());
System.out.println();
System.out.println("Two lines from br2:");
System.out.println(br2.readLine());
System.out.println(br2.readLine());
System.out.println();
System.out.println("One line from br1:");
System.out.println(br1.readLine());
System.out.println();
}
}
출력
:
One line from br1:
Line1: Lorem ipsum dolor sit amet, <-- reading from start
Two lines from br2:
Line1: Lorem ipsum dolor sit amet, <-- reading from start
Line2: consectetur adipisicing elit,
One line from br1:
Line2: consectetur adipisicing elit, <-- resumes on line 2
'BufferedReader 사본'이란 정확히 무엇을 의미합니까? 어떻게 든 두 번 같은 스트림을 읽을 수있을 것으로 기대하십니까? 그것은 불가능합니다. 사실 그것은 모순입니다. – EJP