Java: Как я могу передать InputStream в стандартный выход? - PullRequest
3 голосов
/ 27 февраля 2010

Есть ли простой (а значит, быстрый) способ сделать это? По сути, просто взять некоторый входной поток, это может быть что-то вроде socket.getInputStream (), и иметь буфер потока, автоматически перенаправляющий на стандартный выход?

Ответы [ 2 ]

12 голосов
/ 27 февраля 2010

Нет простых способов сделать это, потому что InputStream имеет интерфейс в стиле pull, когда OutputStream имеет интерфейс в стиле push. Вам нужен какой-то насосный контур, чтобы извлечь данные из InputStream и вставить их в OutputStream. Примерно так (при необходимости запустите его в отдельном потоке):

int size = 0;
byte[] buffer = new byte[1024];
while ((size = in.read(buffer)) != -1) out.write(buffer, 0, size);

Это уже реализовано в Apache Commons IO как IOUtils.copy()

1 голос
/ 27 февраля 2010

Вам нужен простой поток, который читает из входного потока и записывает в стандартный вывод. Убедитесь, что он уступает другим потокам.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...