我有一个启动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();
虽然什么都没发生。控制台仍在等待输入。
有什么想法吗?
编辑:这个问题得到了回答,如下所示。我正在编辑以显示错误代码(顺便说一句,我没有包括在内。哈哈)。
在这writer.write()
部分之前,我有一个
String line;
line = reader.readLine();
while (line != null) {
System.out.println(line);
line = reader.readLine();
}