使用Runtime.exec创建文件?

时间:2011-05-06 16:07:09

标签: java linux shell terminal

我在Java中使用Runtime.exec时遇到了麻烦,似乎有些命令可以正常运行而有些则无法运行。例如,如果我运行

echo some data > data.txt

在我的终端中,它工作正常,但是如果我尝试使用Java来执行此操作则无效。

Runtime mRuntime = Runtime.getRuntime();
Process mProcess = mRuntime.exec("echo some data > data.txt");
mProcess.waitFor();

这有什么理由吗?

2 个答案:

答案 0 :(得分:8)

echo不是一个真正的命令,因为它有一个你可以运行的二进制文件。它是贝壳的内置功能。<​​/ p>

您可以尝试在Windows中运行类似cmd.exe的shell或在Linux / Mac / Unix中运行sh,然后传递命令以字符串形式运行..就像使用'bash'一样,你可以这样做:

编辑,因为使用Runtime

重定向略有不同

要正确执行重定向,您应该使用exec的{​​{1}}形式。

这是一个可以使用重定向的快速示例。

String[]

但是如果您只是想创建一个文件,可以使用Java自己的API创建该文件,而不是使用public class RunTest { public static void main(String[] args) throws Exception { String [] commands = { "bash", "-c", "echo hello > hello.txt" }; Runtime.getRuntime().exec(commands); } }

答案 1 :(得分:1)

那是因为echo是shell内部命令而不是可以执行的程序! 请尝试改为bash -c "echo some data > data.txt"