从Java运行可执行文件

时间:2014-04-18 22:46:51

标签: java process cmd system-calls

我有一个外部可执行程序,我想在我的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)输入程序?

编辑:顺便说一下,当我运行上面看到的方法时,即使文件正在执行,我也看不到任何输出。

1 个答案:

答案 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