我有一个 EXE 文件addOne.exe
,它会在控制台(NOT命令行参数)<持续获取用户的整数输入< / strong>并将整数+ 1 输出到控制台。样本输出如下所示:
1
2
6
7
29
30
...
我正在尝试编写一个可以执行以下操作的java程序:
Scanner.nextInt()
从 Java程序继续获取用户输入,并输入EXE作为控制台输入我可以使用:
运行EXEnew ProcessBuilder("D:\\pathtofile\\addOne.exe").start();
但我不知道如何将输入从Java程序发送到EXE并从EXE输出到Java程序。
谢谢。
答案 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));
现在,您拥有了实现目标的所有组件:
Scanner#nextInt()
从控制台读取用户输入。writer
reader
System.out.println()