从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程序。
谢谢。
当您使用ProcessBuilder
和ProcessBuilder#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));
现在,您拥有了实现目标的所有组件:
- 使用
Scanner#nextInt()
从控制台读取用户输入。 - 使用
writer
将用户输入写入外部程序 - 使用
reader
外部程序的数据输出 - 最后使用
System.out.println()
将数据打印到控制台
- 在共享偏好中保存意图
- Android Javamail自定义身份validation
- 如何使用Java客户端访问Google服务?
- 如何将我的Java应用程序日志记录事件映射到GCP中的相应云记录事件级别Felastic非compat App Engine?
- Google Cloud Dataflow BigQueryIO.Write发生未知错误(http代码500)
- 从Google Play中提取统计信息
- JOBB DirectoryFullException:de.waldheinz.fs.fat.DirectoryFullException:目录已满
- 找到浪费记忆的课程
- 如何使用Jsoup获取表单validation码图像?