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();
何も起こらなかったのに。コンソールはまだ入力を待っていました。
何かご意見は?
編集:以下で受け入れられているように、質問に回答しました。欠陥のあるコードを表示するために編集しています(ところで、これを含めることができませんでした.Lol)。
パートの前にwriter.write()
、私は
String line;
line = reader.readLine();
while (line != null) {
System.out.println(line);
line = reader.readLine();
}