25

Java プロセスの出力を親 Java プロセスの標準出力にリダイレクトしたいと考えています。

次のように ProcessBuilder クラスを使用します。

public static void main(String[] args) {
  ProcessBuilder processBuilder = new ProcessBuilder("cmd");
  processBuilder.directory(new File("C:"));   
  processBuilder.redirectErrorStream(true); // redirect error stream to output stream
  processBuilder.redirectOutput(ProcessBuilder.Redirect.INHERIT);
}

「cmd」の出力は次のようになると予想していました。

Microsoft Windows [バージョン 6.1.7601] Copyright (c) 2009 Microsoft Corporation. Tous droits reservés.

java プログラムの実行に使用される DOS コンソールに表示されます。しかし、DOS コンソールには何も表示されません。

議論の他のスレッドでは、BufferedReader クラスを使用した解決策を見ました。しかし、ここでは、BufferedReader や "while reading loop" を使用せずに、プロセスの出力を標準出力に直接表示したいと考えています。出来ますか?

ありがとう。

4

2 に答える 2

26

ProcessBuilder.inheritIO()現在の Java プロセスと同じ I/O を使用してみてください。さらに、メソッドをデイジーチェーンすることができます:

ProcessBuilder pb = new ProcessBuilder("cmd")
    .inheritIO()
    .directory(new File("C:"));
pb.start();
于 2015-01-20T10:15:02.423 に答える