小编Gx.*_*ero的帖子

写入Java进程的InputStream

我有一个代码,通过启动java进程(即:执行编译的java代码)

ProcessBuilder builder = new ProcessBuilder("java", "Sample", "arg1", "arg2");
builder.redirectErrorStream(true);
Process process = builder.start();
Run Code Online (Sandbox Code Playgroud)

通过这个,我基本上可以处理输出和错误

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
Run Code Online (Sandbox Code Playgroud)

现在,我该如何向stdin?发送输入?也就是说,如果进程执行的代码有一行等待输入,如:

Scanner scan = new Scanner(System.in);
String val = scan.nextLine();
System.out.println(val);
Run Code Online (Sandbox Code Playgroud)

我试过这个:

writer.write("I'm from the stdin!.");
writer.flush();
Run Code Online (Sandbox Code Playgroud)

虽然什么都没发生 控制台仍在等待输入.

有什么想法吗?

编辑:问题已得到解答,如下所述.我正在编辑以显示错误的代码(我没有包括btw.Lol).

在这writer.write()部分之前,我有一个

String line;
line = reader.readLine();
while (line != null) …
Run Code Online (Sandbox Code Playgroud)

java process stream

20
推荐指数
2
解决办法
3万
查看次数

标签 统计

java ×1

process ×1

stream ×1