Java Process getInputStream与getOutputStream

时间:2010-11-19 19:55:56

标签: java process input stream

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

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

4 个答案:

答案 0 :(得分:18)

您只能从InputStream读取,因此请使用它来捕获流程的输出。

您写信给OutputStream,因此请使用该功能为您提供输入。

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

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

答案 1 :(得分:7)

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

幸运的是,编译器会告诉你,如果你做错了 - 你已经得到了想要提供的数据,所以你必须将它写入流,这意味着它得到了< / em>是OutputStream

答案 2 :(得分:3)

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

如果有帮助,请参阅JavaDocs

答案 3 :(得分:0)

看看文档。与其他以“显而易见”的方式构建的框架相比,这确实完全搞乱了,所以文档就是你的朋友。

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