我试图从Java代码执行程序。这里是我的代码:从Java执行外部程序
public static void main(String argv[]) {
try {
String line;
Process p = Runtime.getRuntime().exec(
"/bin/bash -c ls > OutputFileNames.txt");
BufferedReader input = new BufferedReader(
new InputStreamReader(p.getInputStream()));
while ((line = input.readLine()) != null) {
System.out.println(line);
}
input.close();
} catch (Exception err) {
err.printStackTrace();
}
}
我的操作系统是Mac OS X 10.6。
如果我从getRuntime().exec()
方法中删除"> OutputFileNames.txt"
,则所有文件名都会打印在控制台上。但我需要将它打印到文件中。
另外,如果我改变了命令:
Process p = Runtime.getRuntime().exec(
"cmd \c dir > OutputFileNames.txt");
,并在Windows上运行它,它运行并打印文件中的结果完全正常了。
我已经阅读了其他文章来执行Java的另一个应用程序,但似乎没有涉及到我的问题。
我真的很感谢任何帮助,我可以得到。
感谢,
如果你想要做的唯一的事情是列出目录中的文件,那么没有理由通过外部程序来做到这一点 - 你可以使用'File.listFiles()'并将结果写入文件中。这将适用于任何操作系统,不需要特定于Mac OS X或Windows的代码。 – Jesper 2010-05-20 14:25:24
这只是我正在尝试的一件基本事情。最终,我想要做的是运行一个外部程序调用并将该程序的输出打印到一个文件中,然后从Java解析文件来完成其他有用的工作。 – 2010-05-20 14:27:32
您是否尝试过使用.exec(new String [] {“/ bin/bash”,“-c”,“ls> OutputFileNames.txt”});它也失败了吗? – Anton 2010-05-20 14:32:23