繁体   English   中英

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

[英]calling system command from java program fails to execute

嗨,我尝试从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命令,则它将成功执行且没有错误,并且可以看到输出。

我认为这是因为管道字符>是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();

我所做的是,我使用特定命令打开了一个新终端,通过这种方式,我可以处理其输出将是连续事件流的命令,例如android的adb logcat 我按照教程做了。 Linux用户会发现与此类似的东西。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM