Java Process getInputStream vs. getOutputStream

2022-09-04 06:56:02

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

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


答案 1

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

您写入 一个 ,因此使用它来为流程提供您的输入。OutputStream

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

这是另一个提示:如果你的进程写入标准错误,一定要也阅读它。如果子进程的标准输出或错误管道已满(因为父 Java 进程未使用它们),则子进程将阻止其调用。write()


答案 2

我总是忽略这些名字,看看返回了什么。如果你的代码有一个 ,你可以到它 - 这意味着它是其他进程的输入。如果你的代码有一个 ,你可以从中读取 - 这意味着它是另一个进程的输出或错误。OutputStreamInputStream

幸运的是,编译器会告诉你你是否做错了事情 - 你得到了你想要证明的数据,所以你必须把它写到流中,这意味着它必须是.OutputStream


推荐