使用StreamGobbler处理输入

我已经通过以下网址访问了StreamGobbler

JavaWorld:Stream

Gobbler

我了解用法及其实施原因。但是,所涵盖的方案仅是那些可能存在命令/处理错误的输出的方案。

我找不到任何使用StreamGobbler来处理输入的情况。例如,在中mailx,我必须指定电子邮件的正文,并按照以下格式进行操作

Process proc = Runtime.getRuntime().exec(cmd);

OutputStreamWriter osw = new OutputStreamWriter(proc.getOutputStream());

osw.write(mailBody);

osw.close();

如何通过StreamGobbler处理此问题,或者不需要通过它进行处理。

回答:

理想情况下,StreamGobbler如果您已经对进行了预期InputStream,则可以在错误流中使用on(在单独的线程中),以调查何时process.waitFor()返回非零值以查找错误消息。如果您对没兴趣InputStream,则在向命令提供输入后即可直接在代码中读取ErrorStream。

Process proc = Runtime.getRuntime().exec(cmd)

// Start a stream gobbler to read the error stream.

StreamGobbler errorGobbler = new StreamGobbler(proc.getErrorStream());

errorGobbler.start();

OutputStreamWriter osw = new OutputStreamWriter(proc.getOutputStream())

osw.write(mailBody)

osw.close();

int exitStatus = proc.waitFor();

if (0 != exitStatus) {

/*

* If you had not used a StreamGobbler to read the errorStream, you wouldn't have

* had a chance to know what went wrong with this command execution.

*/

LOG.warn("Error while sending email: " + errorGobbler.getContent());

}

以上是 使用StreamGobbler处理输入 的全部内容, 来源链接: utcz.com/qa/420862.html

回到顶部