1

重複の可能性:
Runtime.exec の呼び出し時に stdout をキャプチャする

これが質問です。次のコードを用意してください。

public void CMD() {
    try
    {            
        Runtime rt = Runtime.getRuntime();

        Process proc = rt.exec("dir");
        InputStream stdin = proc.getInputStream();
        InputStreamReader isr = new InputStreamReader(stdin);
        BufferedReader br = new BufferedReader(isr);
        String line = null;
        System.out.println("<OUTPUT>");
        while ( (line = br.readLine()) != null)
            System.out.println(line);
        System.out.println("</OUTPUT>");
        int exitVal = proc.waitFor();            
        System.out.println("Process exitValue: " + exitVal);
    } catch (Throwable t)
    {
        t.printStackTrace();
    }
}

出力を jTextArea に転送するにはどうすればよいですか?

4

2 に答える 2

2

次のように簡単です。

    while ( (line = br.readLine()) != null) {
        textArea.append(line + "\n");
    }
于 2012-08-12T01:38:56.957 に答える
1

UI を処理から切り離した方がよいと思います。この概念はレイヤリングと呼ばれます。このメソッドでマークアップを表示することに反対します。ランタイム プロセスから実際に情報を取得することとは別にしておくことをお勧めします。

プロセスを実行する新しい方法について読むことをお勧めします。

  1. http://www.javaworld.com/jw-12-2000/jw-1229-traps.html
  2. http://www.java-tips.org/java-se-tips/java.util/from-runtime.exec-to-processbuilder.html
于 2012-08-12T01:39:12.137 に答える