Squidiemeister
Squidiemeister

Reputation: 63

Executing an EXE from Java and getting input and output from EXE

I have an EXE file, addOne.exe which continuously gets an integer input from the user on the console (NOT command line parameters) and outputs the integer + 1 onto the console . Sample output is shown below:

1
2

6
7

29
30
...

I am trying to code a java program that can:

I am able to run the EXE using:

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

but I don't know how to send input from the Java program to the EXE and get output from the EXE to the Java program.

Thank you.

Upvotes: 3

Views: 5554

Answers (1)

Wilson
Wilson

Reputation: 11619

When you start an external program with ProcessBuilder with ProcessBuilder#start(), a Process object will be created for the program and as follows:

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

You can access the input stream and output stream with the process object:

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

To write data into the external program, you can instantiate a BufferedWriter with the processOutputSream:

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

To read data from the external program, you can instantiate a BufferedReader with the processInputStream:

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

Now you have all the components to reach your goal:

  1. Read the user input from console with Scanner#nextInt().
  2. Write the user input to the external program with writer
  3. Read the data output from the external program with reader
  4. Finally print the data to the console with System.out.println()

Upvotes: 10

Related Questions