我在unix上执行命令:/bin/ls > /var/opt/test.txt把内容输出到test.txt文件中。 try
{
Runtime runtime = Runtime.getRuntime();
runtime.exec("/bin/ls > /var/opt/test.txt");
} catch (IOException e) {
e.printStackTrace();
}
通过java 来调用后,发现 " > " 这个输出命令没有执行,谁能告诉我是为什么吗?
谢谢了!
{
Runtime runtime = Runtime.getRuntime();
runtime.exec("/bin/ls > /var/opt/test.txt");
} catch (IOException e) {
e.printStackTrace();
}
通过java 来调用后,发现 " > " 这个输出命令没有执行,谁能告诉我是为什么吗?
谢谢了!
java首先把cmd做了拆分,
然后转调Runtime.exec(String[] cmdArray),
这样,一个合法的unix命令
/bin/ls > XXXXX.txt
实际上被转成了一个数组:
/bin/ls
>
XXXXX.TXT
这样,unix无法再还原I/O重定向。建议你将/bin/ls > xxxx.txt这样的指令组合,写成脚本,由java调用脚本达到想要的目的,或者,由java执行/bin/ls,然后从输入流中读出进程运行结果,写入xxx.txt目标文件。
学到了,学到了~~能问下:因为,从Runtime.exec(cmd)的原理上来讲,
java首先把cmd做了拆分,
然后转调Runtime.exec(String[] cmdArray),
这样,一个合法的unix命令
/bin/ls > XXXXX.txt
实际上被转成了一个数组:
/bin/ls
>
XXXXX.TXT你是在哪里学到的吗?