Java进程getInputStream与getOutputStream

Java进程getInputStream与getOutputStream,java,process,input,stream,Java,Process,Input,Stream,我对溪流有点困惑。。。哪个是哪个 简单地说,我应该使用哪个流来捕获进程的输出,我应该使用哪个流来为进程提供一些输入?getOutputStream是进程的输入。getInputStream是从进程读取的输出 如果有帮助,请参阅。我总是忽略这些名称,查看返回的内容。如果您的代码有一个OutputStream,您可以对其进行写入-这意味着它是另一个进程的输入。如果您的代码有一个InputStream,您可以从中读取-这意味着它是另一个进程的输出或错误 幸运的是,编译器会告诉您是否做了错误的事情-您已

我对溪流有点困惑。。。哪个是哪个


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

getOutputStream是进程的输入。getInputStream是从进程读取的输出


如果有帮助,请参阅。

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


幸运的是,编译器会告诉您是否做了错误的事情-您已经获得了要验证的数据,因此您必须将其写入流,这意味着它必须是
输出流
您只能从
输入流中读取,因此使用它来捕获进程的输出

您将写入一个
输出流
,因此使用它为流程提供您的输入

您使用的名称在衍生流程的上下文中有意义。但是API名称在父进程的上下文中是有意义的


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

查看文档。与其他以“显而易见”的方式实现的框架相比,这确实是完全混乱的,所以doc是您的朋友

public abstract OutputStream getOutputStream()
> Gets the output stream of the subprocess. Output to the stream is piped into the standard input stream of the process
应该太简单了,没有:

public abstract InputStream getInputStream()
> Gets the standarinput stream of the subprocess. Output to the stream is piped into the standard input stream of the process

我觉得这很有说服力,更不用说有缺陷了。在提供此方法的对象的上下文中命名方法不是一种核心的面向对象设计模式吗?