我正在通过Runtime.exec实现mailx命令,并遇到了本文,该文章解释了正确的方法。

JavaWorld : Runtime.exec

我浏览了这些示例,发现它们引入了一个新类StreamGobbler,该类接受InputStream并输出输出。
但是,我不明白为什么引入了此原因。谁能解释一下。

另外,作为我的代码的一部分,我编写了以下内容

OutputStreamWriter osw = new OutputStreamWriter(proc.getOutputStream())
osw.write(mailBody)
osw.close


这个实现是正确的还是有任何陷阱?

最佳答案

由于您的程序可能会成功(这意味着该程序的输出将在Process' getInputStream()上可用)或它可能会失败(这意味着该程序的错误将在Process' getErrorStream()上可用),您应该能够并行读取这些内容,因此需要一个单独的线程,该线程由StreamGobbler类实现。

10-01 12:10