6

I have a little problem with executing a command line tool. I want to execute UnRAR.exe from WinRAR. I do it like this:

Process process = runtime.exec("\"" + unrarPath + "\"" + " x -kb -vp " + "\"" + fileName + "\"", null, f.getParentFile());

My problem is that the compressed file is password protected. If I execute the command in my console I'm asked for a password. If I let Java execute it the program just ends and never waits for a user input (the password).

I tried to write to the process outputstream but that didn't work. Is there anything I need to know about the behavior of command line programs executed in "different" environments?

EDIT: Maybe I wasn't clear enough. My question is: Is it possible to interact with a command line program with Java?

1
  • I added new answer and deleted old. I hope new answer should satisfy you. Commented Feb 27, 2013 at 17:25

2 Answers 2

11

Works for me. Perhaps you didn't write a newline and flush the stream?

Process tr = Runtime.getRuntime().exec( new String[]{ "cat" } );
Writer wr = new OutputStreamWriter( tr.getOutputStream() );
BufferedReader rd = new BufferedReader( new InputStreamReader( tr.getInputStream() ) );
wr.write( "hello, world\n" );
wr.flush();
String s = rd.readLine();
System.out.println( s );

http://ideone.com/OUGYv

+1 to your question, java.lang.Process was what I was looking for!

Sign up to request clarification or add additional context in comments.

Comments

0

There are few methods to run process and interact with it.

There is Process class in java. It allows to get all 3 streams of subprocess (process called by your java app).

Process class in java help: link

Here you can find few examples of code, that executes process in java: link

However data from output and error streams will be available for you after process ends (your program will be "stopped" on line with .exec() method until subprocess ends).

To interact with running process you have to use another thread.

Using a thread to capture process output

Interacting with another process Java

Comments

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.