使用java创建unix文件

时间:2014-03-19 06:33:46

标签: java linux unix

如果我在unix shell中使用此命令:

ls -lrt > ttrr 

我得到了我的输出。

但是当我把这个命令放在java程序中然后它不起作用时,它不会给出任何错误,但是在程序执行完成后没有创建文件

这是我的计划:

public class sam
   {
       public static void main(String args[])
         {
            try
               {
                 Runtime.getRuntime().exec(" ls -lrt > ttrr");
               }
          catch(Exception e)
                {
                  e.printStackTrace();
                }
         }
   }

1 个答案:

答案 0 :(得分:1)

在Unix中,您需要注意命令行首先由shell处理,然后执行生成的字符串。在您的情况下,此命令:ls -lrt > ttrr中包含>,必须由shell处理。

当您使用Runtime.getRuntime().exec(command);时,command字符串不会被shell处理,而是直接发送到操作系统以便执行。

如果您希望正确执行命令(我在谈论ls -lrt > ttrr),您必须在同一命令中执行shell。在Bash的情况下,你可以使用这样的东西:

public static void main(String args[]) {
    try {
        Runtime.getRuntime().exec(new String[] {"bash", "-c", "ls -lrt > ttrr"});
    } catch(Exception e) {
        e.printStackTrace();
    }
}

实际执行的是一个带有两个参数的命令:“bash”(shell程序),“ - c”用于在命令行中执行脚本的Bash选项,以及“ls -lrt> ttrr”是你想要运行的实际“命令”。