InputStream の「複製」中に問題が発生しました。
これは動作しません:
InputStream is = ClassLoader.getSystemResourceAsStream("myResource");
しかし、これは機能します:
InputStream is = new BufferedInputStream(new FileInputStream("/afas.cfg"));
私のコードは次のとおりです。
// Create a piped input stream for one of the readers.
PipedInputStream in = new PipedInputStream();
// Create a tee-splitter for the other reader.(from apache commons io)
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();
問題は、最初のbr1.readLine()
呼び出しで発生します。行き詰まりPipedInputStream.awaitSpace()
、無限ループに陥っています。
PipedStreams はスレッド専用ですか? つまり、PipedOutputStreams に書き込むと、PipedInputStream が「起動」します。
いずれにせよ、この仕事を得るために私は何をしなければなりませんか?