[英]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.