我有一个外部可执行程序,我想在我的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)程序,GET(2)程序输出,然后在必要时SEND(3)输入程序?
编辑:顺便说一下,当我运行上面看到的方法时,即使文件正在执行,我也看不到任何输出。
答案 0 :(得分:0)
尝试创建一个文件,该文件将保存您希望.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