У меня есть код, который запускает процесс Java (т.е. выполнение скомпилированного кода Java) через
ProcessBuilder builder = new ProcessBuilder("java", "Sample", "arg1", "arg2");
builder.redirectErrorStream(true);
Process process = builder.start();
Благодаря этому я могу в основном обрабатывать вывод и ошибки
OutputStream stdin = process.getOutputStream(); // <- Eh?
InputStream stdout = process.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(stdout));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(stdin));
// reader.readLine() blah blah
Теперь, как я могу отправить ввод в stdin
? То есть, если код, выполняемый процессом, имеет строку, ожидающую ввода, как в:
Scanner scan = new Scanner(System.in);
String val = scan.nextLine();
System.out.println(val);
Я пробовал это:
writer.write("I'm from the stdin!.");
writer.flush();
Хотя ничего не произошло. Консоль все еще ждала ввода.
Какие-нибудь мысли?
EDIT: На вопрос был дан ответ, принятый ниже. Я редактирую, чтобы показать неверный код (который, кстати, я не включил, лол).
До части writer.write()
у меня был
String line;
line = reader.readLine();
while (line != null) {
System.out.println(line);
line = reader.readLine();
}
...from the stdin!\n");
. Хотя ничего не изменилось. :| - person Gx.Zero   schedule 19.09.2013writer.write("I'm from the stdin."); writer.write("\r\n"); writer.flush();
- person Gx.Zero   schedule 20.09.2013