我正在尝试从Java程序中运行一个外部程序,但遇到了困难。基本上我想做的是:
Runtime.getRuntime().exec("./extprogram <fileIn >fileOut");
然而,我发现这并不起作用 - Java显然需要使用带有输入和输出流以及其他我不熟悉的东西的
Process
。我查看了互联网上的许多示例(其中许多来自SO),似乎没有简单标准的方法来完成这个任务,对于那些不完全理解正在发生的事情的人来说,这可能非常令人沮丧。此外,我试图根据其他人代码的示例构建自己的代码时遇到了麻烦,因为通常大多数人 1. 不感兴趣重定向stdin
,2. 不一定将stdout
重定向到文件,而是重定向到System.out
。所以,是否有人能够指引我朝着调用外部程序并重定向stdin
和stdout
的良好简单代码模板的方向?谢谢。
bp.redirectErrorStream(true)
将其折叠到进程的 InputStream 中。 - Hovercraft Full Of EelsProcessBuilder
没有redirectInput()
或redirectOutput()
函数。http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/ProcessBuilder.html - MattSProcessBuilder.redirectOutput()
的方法可以接受一个OutputStream
。 - Nico