我有一个EXE file, addOne.exe
它不断地从控制台上的用户输入一个整数(不是命令行参数)并输出整数 + 1到控制台上。示例输出如下所示:
1
2
6
7
29
30
...
我正在尝试编写一个java程序,它可以:
-
Run the EXE
- 不断得到用户输入来自Java程序 using
Scanner.nextInt()
并作为控制台输入输入到 EXE
- 每当 EXE 将文本输出到控制台时,就从Java程序
我可以使用以下命令运行 EXE:
new ProcessBuilder("D:\\pathtofile\\addOne.exe").start();
但我不知道如何将Java程序的输入发送到EXE并将输出从EXE获取到Java程序。
谢谢。
当您启动外部程序时ProcessBuilder
with ProcessBuilder#start()
, a Process
将为程序创建对象,如下所示:
Process process = new ProcessBuilder("D:\\pathtofile\\addOne.exe").start();
您可以使用以下命令访问输入流和输出流process
object:
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));
现在您已拥有实现目标的所有组件:
- 从控制台读取用户输入
Scanner#nextInt()
.
- 将用户输入写入外部程序
writer
- 读取外部程序输出的数据
reader
- 最后将数据打印到控制台
System.out.println()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)