gpt4 book ai didi

java - 使用 StreamGobbler 处理输入

转载 作者:塔克拉玛干 更新时间:2023-11-03 05:10:30 28 4
gpt4 key购买 nike

我已经通过了StreamGobbler我了解它的用法和实现原因。然而,所涵盖的场景只是那些可能有命令输出/处理错误的场景。

我没有发现任何使用 StreamGobbler 处理输入的场景。例如,在 mailx 中,我必须指定电子邮件的正文,我已按以下格式完成

Process proc = Runtime.getRuntime().exec(cmd);
OutputStreamWriter osw = new OutputStreamWriter(proc.getOutputStream());
osw.write(mailBody);
osw.close();

如何通过 StreamGobbler 处理,或者不需要通过它处理?

最佳答案

理想情况下,如果您已经在 InputStream 上期待某些内容,您可以在错误流中使用 StreamGobbler(在单独的线程中),以查看何时 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());
}

关于java - 使用 StreamGobbler 处理输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12258243/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com