Runtime's exec() method is not redirecting the output

user2110167 picture user2110167 · Apr 26, 2013 · Viewed 19.7k times · Source
Process p = Runtime.getRuntime().exec("sh somescript.sh &> out.txt");

I am running this command using Java. The script is running but it's not redirecting its stream to the file. Moreover, the file out.txt is not getting created.

This script runs fine if I run it on shell.

Any ideas?

Answer

johnchen902 picture johnchen902 · Apr 26, 2013

You need to use ProcessBuilder to redirect.

ProcessBuilder builder = new ProcessBuilder("sh", "somescript.sh");
builder.redirectOutput(new File("out.txt"));
builder.redirectError(new File("out.txt"));
Process p = builder.start(); // may throw IOException