I am trying to get the OutputStream
of the Process
initiated by exec()
to the console. How can this be done?
Here is some incomplete code:
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;
import java.io.Reader;
public class RuntimeTests
{
public static void main(String[] args)
{
File path = new File("C:\\Dir\\Dir2");
String command = "cmd /c dir";
Reader rdr = null;
PrintStream prtStrm = System.out;
try
{
Runtime terminal = Runtime.getRuntime();
OutputStream rtm = terminal.exec(command, null, path).getOutputStream();
prtStrm = new PrintStream(rtm);
prtStrm.println();
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
I faced the similar problem and I am using the following code.
I believe this is what you're looking for:
If you can use org.apache.commons.io.IOUTils from commons-io,
Try
VerboseProcess
from jcabi-log:The class starts a background thread, listens to the output stream, and logs it.
I recently ran into this problem and just wanted to mention that since java 7 the process builder api has been expanded. This problem can now be solved with:
I hope this helps :)
You need to start a new thread that would read terminal output stream and copy it to the console, after you call process.waitFor()