我可以解复用流吗?
我想将Process
的stderr(getErrorStream
)和标准输出(getInputStream
)加入单个的Stream
中,以便在其他地方使用。 Java的库中有什么能为我做到这一点?我可以解复用流吗?
注意:没有外部库。我对Apache Commons IO提供的解决方案的存在并不感兴趣。我只想知道JDK是否有一些东西。
您可以使用SequenceInputStream合并2个InputStream。
不令人满意 - 这不是解复用,只是序列化。 – 2012-02-10 17:28:13
ProcessBuilder.redirectErrorStream(boolean)
做你想做的。
public ProcessBuilder redirectErrorStream(boolean redirectErrorStream)
设置此进程生成的
redirectErrorStream
财产。如果此属性是
true
,然后通过随后通过此对象的start()
方法启动子进程生成任何错误输出将与标准输出合并,这样既可以用Process.getInputStream()
方法读取。这样可以更容易地将错误消息与相应的输出相关联。初始值为false
。
编辑:@Since Java 5或更高版本,所以应广泛提供。
不适用于我:两个流都必须生成,分别传递给其他对象,然后最终到达必须加入它们以馈送另一个进程的点。 – 2012-02-10 19:27:44
不,在JDK中没有这样的事情(直到6,7我还没有看过每个类)。
您是否试过[ProcessBuilder.redirectErrorStream()](http://docs.oracle.com/javase/6/docs/api/java/lang/ProcessBuilder.html#redirectErrorStream(boolean))? – 2012-02-10 16:43:54
@GabrielBelingueres我认为在这个过程中为时过早。我不认为我可以将决定移交给ProcessBuilder的所有者,但我会研究它。 – 2012-02-10 17:30:36
它是否必须是粗壮和sterr? – 2012-04-03 21:10:36