Я столкнулся с проблемой при «клонировании» 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 «проснется»
Что я должен сделать, чтобы получить эту работу в любом случае?
new FileInputStream(...) ?
- person Zarathustra   schedule 10.12.2013