1

可能重复:
调用 Runtime.exec 时捕获标准输出

这是问题,有以下代码,

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 回答