使用Apache Commons Exec时,如何单独收集标准输出和标准错误?

时间:2016-01-02 22:24:31

标签: java stdout stderr apache-commons-exec

以下代码获取所有输出,无论是stdout还是stderr。

var data = require( 'gamedata.json' )

如何单独获取两个流?

1 个答案:

答案 0 :(得分:5)

PumpStreamHandler为stderr获取第二个构造函数参数。正如您所观察到的那样,只有一个OutputStream的构造函数会将stdout和stderr写入其中。
看到 https://commons.apache.org/proper/commons-exec/apidocs/org/apache/commons/exec/PumpStreamHandler.html

因此以下方法应该处理它。

    String line = String.format("paty/to/script.py");
    CommandLine cmd = CommandLine.parse(line);
    DefaultExecutor executor = new DefaultExecutor();
    ByteArrayOutputStream stdout = new ByteArrayOutputStream();
    ByteArrayOutputStream stderr = new ByteArrayOutputStream();
    PumpStreamHandler psh = new PumpStreamHandler(stdout, stderr);
    executor.setStreamHandler(psh);
    int exitvalue = executor.execute(cmd);
    String output = stdout.toString();
    String error = stderr.toString();