Java Process getInputStream与getOutputStream

Ton*_*y R 12 java input process stream

我对溪流有点困惑......哪个是哪个?

简单地说,我应该使用哪个流来捕获我的Process的输出,以及我应该使用哪个流来为我的Process提供一些输入?

eri*_*son 19

您只能从中读取InputStream,因此使用它来捕获进程的输出.

你写一个OutputStream,所以用它来给你的过程输入.

您正在使用在生成的进程的上下文中有意义的名称.但API名称在父进程的上下文中是有意义的.

这是另一个提示:如果您的进程写入标准错误,请务必阅读.如果子进程的标准输出或错误管道已满(因为您的父Java进程没有使用它们),子进程将阻止其write()调用.

  • 我发现它非常令人困惑,更不用说有缺陷了.它不是一个核心的面向对象设计模式,在提供此方法的对象的上下文中命名方法吗? (7认同)

Jon*_*eet 7

我总是忽略这些名字并查看返回的内容.如果您的代码有OutputStream,您可以写入 - 这意味着它是其他进程的输入.如果您的代码有InputStream,您可以从中读取 - 这意味着它是其他进程的输出或错误.

幸运的是,编译器会告诉你,如果你在做错误的事情-你已经得到了你想要provde数据,因此你将它写入流,这意味着它OutputStream.