您好我试图从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命令它成功执行而没有错误,我可以看到输出。
答案 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用户会发现类似的东西。