我正在尝试从 Java 程序运行外部程序,但遇到了问题。基本上我想做的是:
Runtime.getRuntime().exec("./extprogram <fileIn >fileOut");
但是我发现那行不通 - Java apparentls 需要将 Process
与输入和输出流以及我没有经验的其他东西一起使用。
我看过互联网上的许多示例(其中很多来自 SO),但似乎没有一种简单的标准方法可以做到这一点,对于那些不完全了解什么是继续下去,可能会非常令人沮丧。
我在尝试根据其他人的代码示例构建自己的代码时也遇到了麻烦,因为通常看来大多数其他人 1. 对重定向 stdin
不感兴趣,并且 2. 不感兴趣不必将 stdout
重定向到文件,而是重定向到 System.out
。
那么,有人能给我指出任何好的简单代码模板的方向,用于调用外部程序和重定向 stdin
和 stdout
吗?谢谢。
最佳答案
你可以尝试这样的事情:
ProcessBuilder pb = new ProcessBuilder();
pb.redirectInput(new FileInputStream(new File(infile));
pb.redirectOutput(new FileOutputStream(new File(outfile));
pb.command(cmd);
pb.start().waitFor();
关于java - 使用来自 Java 的重定向标准输入和标准输出运行外部程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11336157/