从Java执行EXE并从EXE获取输入和输出

时间:2016-06-28 05:42:47

标签: java

我有一个 EXE 文件addOne.exe,它会在控制台(NOT命令行参数)<持续获取用户的整数输入< / strong>并将整数+ 1 输出到控制台。样本输出如下所示:

1
2

6
7

29
30
...

我正在尝试编写一个可以执行以下操作的java程序:

  • 运行 EXE
  • 使用Scanner.nextInt() Java程序继续获取用户输入,并输入EXE作为控制台输入
  • 每当EXE将文本输出到控制台时,从 Java程序
  • 打印该文本

我可以使用:

运行EXE
new ProcessBuilder("D:\\pathtofile\\addOne.exe").start();

但我不知道如何将输入从Java程序发送到EXE并从EXE输出到Java程序。

谢谢。

1 个答案:

答案 0 :(得分:7)

当您使用ProcessBuilder ProcessBuilder#start()启动外部程序时,将为该程序创建一个Process对象,如下所示:

Process process = new ProcessBuilder("D:\\pathtofile\\addOne.exe").start();

您可以使用process对象访问输入流和输出流:

InputStream processInputStream = process.geInputStream();
OutputSteam processOutputStream = process.getOutputStream();

要将数据写入外部程序,您可以使用BufferedWriter实例化processOutputSream

BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(processOutputStream));

要从外部程序读取数据,您可以使用BufferedReader实例化processInputStream

BufferedReader reader = new BufferedReader(new InputStreamReader(processInputStream));

现在,您拥有了实现目标的所有组件:

  1. 使用Scanner#nextInt()从控制台读取用户输入。
  2. 使用writer
  3. 将用户输入写入外部程序
  4. 使用reader
  5. 读取外部程序的数据输出
  6. 最后使用System.out.println()
  7. 将数据打印到控制台