谁能给我一个例子来说明如何流式传输外部程序的输出DefaultExecutor
?我没有找到任何描述如何执行此操作的文档。
我的外部进程将运行几个小时,因此仅获取所有输出数据是不可行的;它必须被流式传输。
注意:此解决方案是同步的,因此它不会流式传输。您需要在单独的线程中读取,或使用执行命令的异步版本。
private InputStream getStream() {
String dataParsingCommand = "java";
PipedOutputStream output = new PipedOutputStream();
PumpStreamHandler psh = new PumpStreamHandler(output);
CommandLine cl = CommandLine.parse(command);
cl.addArgument("-jar");
cl.addArgument(dataParserPath);
DefaultExecutor exec = new DefaultExecutor();
DataInputStream is = null;
try {
is = new DataInputStream(new PipedInputStream(output));
exec.setStreamHandler(psh);
exec.execute(dataParserCommandLine);
} catch (ExecuteException ex) {
} catch (IOException ex) {
}
return is;
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)