0

Hi i tried to execute the following command from java code in linux, ls > out.txt

here is my code

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"); 

I checked output file was not generated. However if I leave the output file part only run ls command it successfully executes without error and I can see the output.

4

2 回答 2

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();
于 2012-10-16T04:09:53.600 回答
0

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

于 2012-10-16T18:30:11.773 回答