我試圖從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