Как вы передаете OutputStream и InputStream на консоль? - PullRequest
4 голосов
/ 13 июля 2011

При запуске процесса, как мне направить его вывод в System.out, а его ввод в System.in:

Process p = Runtime.getRuntime().exec("cubc.exe");
// do something with p.getOutputStream())

РЕДАКТИРОВАТЬ: я думаю, что я объяснил это неправильно;Я не хочу вводить данные в программу, я хочу, чтобы пользователь вводил данные в программу, и я не хочу читать выходные данные, я хочу, чтобы пользователь считывал выходные данные.

Ответы [ 3 ]

10 голосов
/ 13 июля 2011

Использование IOUtils класса от Apache Commons IO :

Process p = Runtime.getRuntime().exec("cubc.exe");
IOUtils.copy(p.getInputStream(), System.out);
2 голосов
/ 13 июля 2011

Вы можете получить ввод следующим образом:

Scanner scan = new Scanner(p.getInputStream());

Что касается выходного потока, вы можете захватить его таким же образом и распечатать, используя System.out. * методы:

OutputStream os = p.getOutputStream();
0 голосов
/ 13 июля 2011

Вы не можете сделать это с помощью Java. Однако вы можете создать свой процесс и использовать PipedOutputStream , чтобы перехватить вывод, а затем записать его в System.out.println. Кроме этого, я не думаю, что есть какой-то другой путь.

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