我有一个外部可执行程序,我想在我的 java 程序中运行它。当它运行时,我需要一种方法来获取 .exe 输出的内容,以及一种将输入发送回 .exe 的方法。这是我到目前为止所想到的:
public int run(){
String cmdRun = "cmd C:\\Meister\\Student\\bin\\Student.exe";
int returnCode = 1;
try {
Process p = Runtime.getRuntime().exec(cmdRun); // makes appropriate system call
BufferedReader stdError = new BufferedReader(new
InputStreamReader(p.getErrorStream()));
BufferedReader stdInput = new BufferedReader(new
InputStreamReader(p.getInputStream()));
String s = null;
// read any info from the attempted command
while ((s = stdError.readLine()) != null){ returnCode = -1; break; }
while ((s = stdInput.readLine()) != null){ System.out.println(s); }
System.out.println("Finished with exit code " + p.waitFor());
} catch (Exception e) {
e.printStackTrace();
}
return returnCode;
}
我应该如何正确地运行(1)程序,获取(2)程序输出,然后在必要时发送(3)输入到程序?
编辑:顺便说一句,当我运行上面看到的方法时,即使正在执行文件,我也看不到任何输出。
最佳答案
尝试创建一个文件来保存您希望 .exe 接收的输入,并创建另一个文件来保存 .exe 的输出,以便 java 程序可以读取它。
如果这没有帮助,这里有一些链接,希望可以:
关于流程构建器的所有信息: http://docs.oracle.com/javase/1.5.0/docs/api/java/lang/ProcessBuilder.html
我在搜索一段时间时也发现了这个:
java runtime.getruntime() getting output from executing a command line program
关于java - 从 Java 运行可执行文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23163545/