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

我有一个EXE文件addOne.exe ,它不断从控制台上的用户获取整数输入(NOT命令行参数) ,并将整数+ 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程序。

谢谢。

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

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

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

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

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

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

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

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

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

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