如何从Java代码中读取可执行文件stdout stderr?

如何从Java代码中读取可执行文件stdout stderr?,java,stdout,stderr,Java,Stdout,Stderr,好的,可以使用运行时从Java运行命令行可执行文件。甚至可以通过进程WaitFor()获取错误代码。但如何读取可执行文件输出?stdout和stderr?这都不起作用。正确的解决方案至少使用一个以上的线程,两个更好,来处理协同进程的异步性质。这不起作用。正确的解决方案至少需要多使用一个线程(两个更好)来处理协同进程的异步性质。 Runtime tr = Runtime.getRuntime(); try { Process p = tr.exec("c:\\a.bat"); I

好的,可以使用
运行时
从Java运行命令行可执行文件。甚至可以通过进程
WaitFor()
获取错误代码。但如何读取可执行文件输出?stdout和stderr?这都不起作用。正确的解决方案至少使用一个以上的线程,两个更好,来处理协同进程的异步性质。这不起作用。正确的解决方案至少需要多使用一个线程(两个更好)来处理协同进程的异步性质。
Runtime tr = Runtime.getRuntime();

try {
    Process p = tr.exec("c:\\a.bat");
    InputStream err = p.getErrorStream();
    InputStream std = p.getInputStream();
    //TODO here we go!
} catch (IOException e) {
    e.printStackTrace();
}