Create a file using Runtime.exec using echo in linux?
I'm having trouble using Runtime.exec in Java, it seems some commands wo开发者_如何学JAVArk while others do not. For example if I run
echo some data > data.txt
In my terminal it works fine, however if I try and use Java to do this it doesn't work.
Runtime mRuntime = Runtime.getRuntime();
Process mProcess = mRuntime.exec("echo some data > data.txt");
mProcess.waitFor();
Is there any reason for this?
echo
is not a real command in the sense that it has a binary that you can run. It is a built-in function of shells.
You could try running a shell like cmd.exe
in Windows or sh
in Linux/Mac/Unix, and then passing the command to run as a string.. Like using 'bash', you can do this:
edit because redirection is a little different using Runtime
To do redirection correctly, you should be using the form of exec
that takes a String[]
.
Here's a quick example that does work with redirection.
public class RunTest {
public static void main(String[] args) throws Exception {
String [] commands = { "bash", "-c", "echo hello > hello.txt" };
Runtime.getRuntime().exec(commands);
}
}
But if you just wanted to create a file, you could create the file with Java's own API rather than use Runtime
.
That is because echo
is a shell internal command not a program that can be executed!
Try running instead bash -c "echo some data > data.txt"
精彩评论