2

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 が「起動」します。

いずれにせよ、この仕事を得るために私は何をしなければなりませんか?

4

1 に答える 1