我想将OutputStream
传递给多个接收OutputStream
的人。是否有开箱即用的支持,或者比我的解决方案更简单的实现方法?
为了论证,我想将运行ls /tmp
的输出管道传输到System.out
和ByteArrayOutputStream
:
我创建了一个MultiOutputStream
类,以委托给多个OutputStream
。是否有更简单/首选的方法来实现相同的结果?
class MultiOutputStream extends OutputStream {
List<OutputStream> streams
MultiOutputStream(List<OutputStream> streams = []) {
this.streams = streams
}
@Override
void write(int b) throws IOException {
streams.each { it.write(b) }
}
}
def baos = new ByteArrayOutputStream()
def proc = 'ls /tmp'.execute()
proc.waitForProcessOutput(
new MultiOutputStream([System.out, baos]),
System.err
)
proc.waitForOrKill(5000)
println "Do something with this -> " + new String(baos.toByteArray())