Процесс Java getInputStream против getOutputStream - PullRequest
12 голосов
/ 19 ноября 2010

Я немного запутался в потоках ... что это?

Просто, какой поток я должен использовать, чтобы перехватить выходные данные моего Процесса, и какой поток я должен использовать, чтобы дать моему Процессу некоторый ввод?

Ответы [ 4 ]

18 голосов
/ 19 ноября 2010

Вы можете читать только с InputStream, поэтому используйте его для перехвата результатов вашего процесса.

Вы пишете на OutputStream, поэтому используйте его для ввода процесса.*

Вы используете имена, которые имеют смысл в контексте порожденного процесса.Но имена API имеют смысл в контексте родительского процесса.

Вот еще один совет: если ваш процесс пишет со стандартной ошибкой, обязательно прочтите это тоже.Если стандартные каналы вывода или ошибки подпроцесса заполнены (поскольку ваш родительский процесс Java не использует их), дочерний процесс будет блокировать свои вызовы write().

7 голосов
/ 19 ноября 2010

Я всегда игнорирую имена и смотрю, что вернулось.Если ваш код имеет OutputStream, вы можете записать в него - это означает, что это вход для другого процесса.Если ваш код имеет InputStream, вы можете прочитать из него - это означает, что это вывод или ошибка для другого процесса.

К счастью, компиляторскажем вам, если вы делаете не то, что нужно - у вас есть данные, которые вы хотите предоставить, поэтому вы должны записать их в поток, а это значит, что имеет , чтобы быть OutputStream.

3 голосов
/ 19 ноября 2010

getOutputStream вводит в процесс.GetInputStream выводится в формате из процесса.

См. JavaDocs , если это полезно.

0 голосов
/ 23 августа 2016

Посмотрите на док. Это действительно полностью возбуждает, по сравнению с другими фреймворками, которые делают это «очевидным» способом, поэтому документ - ваш друг.

public abstract OutputStream getOutputStream()
> Gets the output stream of the subprocess. Output to the stream is piped into the standard input stream of the process

Должно быть слишком просто, чтобы иметь:

public abstract InputStream getInputStream()
> Gets the standarinput stream of the subprocess. Output to the stream is piped into the standard input stream of the process
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...