7

一部の端末コマンドでは、繰り返し出力されます。たとえば、ファイルを生成している場合、完了した割合を出力することがあります。

Javaで端末コマンドを呼び出す方法を知っています

Process p = Runtime.getRuntim().exec("command goes here");

しかし、それはコマンドの現在の出力のライブフィードを提供しません。System.out.println()たとえば、プロセスの最新の出力が何であったかを確認するために、100 ミリ秒ごとに実行できるようにするにはどうすればよいでしょうか。

4

1 に答える 1

9

プロセスから読み取る必要がありますInputStream。例を次に示します。

編集ここで提案されているようにコードを変更errStreamして、stdInput

ProcessBuilder builder = new ProcessBuilder("command goes here");
builder.redirectErrorStream(true);
Process process = builder.start();
InputStream is = process.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(is));

String line = null;
while ((line = reader.readLine()) != null) {
   System.out.println(line);
}

readLineデバッグの目的で、プロセスがメッセージを終了しない場合に備えて、使用する代わりに入力をバイトとして読み取ることができますnewLine

于 2013-02-16T21:32:37.647 に答える