我正在通过Runtime.exec实现mailx
命令,并遇到了本文,该文章解释了正确的方法。
JavaWorld : Runtime.exec
我浏览了这些示例,发现它们引入了一个新类StreamGobbler
,该类接受InputStream并输出输出。
但是,我不明白为什么引入了此原因。谁能解释一下。
另外,作为我的代码的一部分,我编写了以下内容
OutputStreamWriter osw = new OutputStreamWriter(proc.getOutputStream())
osw.write(mailBody)
osw.close
这个实现是正确的还是有任何陷阱?
最佳答案
由于您的程序可能会成功(这意味着该程序的输出将在Process'
getInputStream()
上可用)或它可能会失败(这意味着该程序的错误将在Process'
getErrorStream()
上可用),您应该能够并行读取这些内容,因此需要一个单独的线程,该线程由StreamGobbler
类实现。