谁能给我一个例子,说明如何流式传输使用 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;
}
关于java - 使用 commons-exec 流输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2702277/