从java程序调用系统命令无法执行

时间:2012-10-16 03:54:09

标签: java terminal

您好我试图从linux中的java代码执行以下命令, ls> out.txt

这是我的代码

try 
            { 
                Process p=Runtime.getRuntime().exec("ls > out.txt"); 
                p.waitFor(); 
                BufferedReader reader=new BufferedReader(new InputStreamReader(p.getInputStream())); 
                String line=reader.readLine(); 
                while(line!=null) 
                { 
                System.out.println(line); 
                line=reader.readLine(); 
                } 

            } 
            catch(IOException e1) {} 
            catch(InterruptedException e2) {} 

            System.out.println("Done"); 

我检查过输出文件没有生成。但是,如果我离开输出文件部分只运行ls命令它成功执行而没有错误,我可以看到输出。

2 个答案:

答案 0 :(得分:1)

我认为这是因为管道符>是一个shell运算符,而你的exec不是用shell创建的。

也许您要做的事情更复杂但是要列出目录,您只需使用File即可。然后,您可以使用PrintWriter迭代这些并将它们保存到文件中。

File dir = new File("/some/path");
PrintWriter writer = new PrintWriter("output.txt");
for(File file : dir.listFiles()){
   writer.println(file.getPath());
}
writer.close();

答案 1 :(得分:0)

我所做的是我用特定命令打开了一个新终端,这样我就可以处理输出将是连续事件流的命令,比如android的adb logcat。 我根据this教程做了。 Linux用户会发现类似的东西。