我可以解复用流吗?

发布于 2025-01-04 14:01:42 字数 243 浏览 1 评论 0原文

我想将 Process 的 stderr (getErrorStream) 和 stdout (getInputStream) 加入到单个 Stream 中在别处消费。 Java 库中有什么可以帮我做到这一点吗?

注意:没有外部库。我对 Apache Commons IO 等提供的解决方案不感兴趣。我只想知道JDK是否有自带的东西。

I want to join stderr (getErrorStream) and stdout (getInputStream) of a Process into a single Stream to be consumed elsewhere. Is there anything in Java's library that will do that for me?

Note: no external libraries. I'm not interested in the existence of a solution provided by, say, Apache Commons IO. I only want to know if there's something that comes with JDK.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

哭了丶谁疼 2025-01-11 14:01:42

ProcessBuilder.redirectErrorStream (boolean) 做你想要的。

公共 ProcessBuilder 重定向错误流(布尔重定向错误流)

设置此流程构建器的 redirectErrorStream 属性。

如果此属性为 true,则随后由该对象的 start() 方法启动的子进程生成的任何错误输出都将与标准输出合并,以便两者可以使用 Process.getInputStream() 方法读取。这使得更容易将错误消息与相应的输出关联起来。初始值为false

编辑:@Since Java 5 或更高版本因此应该广泛可用。

ProcessBuilder.redirectErrorStream(boolean) does what you want.

public ProcessBuilder redirectErrorStream(boolean redirectErrorStream)

Sets this process builder's redirectErrorStream property.

If this property is true, then any error output generated by subprocesses subsequently started by this object's start() method will be merged with the standard output, so that both can be read using the Process.getInputStream() method. This makes it easier to correlate error messages with the corresponding output. The initial value is false.

EDIT: @Since Java 5 or later so should be widely available.

薔薇婲 2025-01-11 14:01:42

您可以使用一个SequenceInputStream来合并2个InputStream。

You can use a SequenceInputStream to merge the 2 InputStream.

椵侞 2025-01-11 14:01:42

不,JDK 中没有任何东西可以做到这一点(直到 6、7 中我还没有查看每个类)。

No, there is no thing that does that in the JDK (up until 6, in 7 I haven't looked at every class yet).

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文