我在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 来调用后,发现 " > " 这个输出命令没有执行,谁能告诉我是为什么吗?
谢谢了!

解决方案 »

  1.   

    命令是没有问题的,难道java对>命令支持不是很好?不了解,帮你顶上去吧~~
      

  2.   

    可以认为无法支持这种输出重定向,因为,从Runtime.exec(cmd)的原理上来讲,
    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目标文件。
      

  3.   


    学到了,学到了~~能问下:因为,从Runtime.exec(cmd)的原理上来讲,
    java首先把cmd做了拆分,
    然后转调Runtime.exec(String[] cmdArray),
    这样,一个合法的unix命令
    /bin/ls > XXXXX.txt
    实际上被转成了一个数组:
    /bin/ls
    >
    XXXXX.TXT你是在哪里学到的吗?