Комбинируя PipedInputStream
с PipedOutputStream
и Питером MultiOutputStream
из другого поста здесь, вы можете получить следующее:
final int CAPCITY = 4096;
final int PIPE_SIZE = 4096;
PipedOutputStream pout = new PipedOutputStream();
ByteArrayOutputStream bout = new ByteArrayOutputStream(CAPACITY);
MultiOutputStream multiOs= new MultiOutputStream(pout, bout);
PipedInputStream is = new PipedInputStream(pout, PIPE_SIZE);
Теперь, если вы выполните:
byte[] bytes = new bytes[1024];
multiOs.write(bytes, 0, 1024);
Вы кормите вашего PipedInputStream
, опционально передавая ссылку другому процессу, то есть Java Thread. Одновременно вы записываете в байтовый массив, который может быть запрошен:
bytes[] written = bout.toByteArray();