在java中可以通過Runtime.getRuntime().exec(cmd)來執行外部命令,我比較常用的是調用shell腳本來完成某些工作,也可以直接執行一個os 的命令,比較調用imagemagick來完成圖片的一些操作,其中需要注意的有兩點,1是最好帶上命令的完整路徑,否則命令可能不會被執行,而且也沒有任何報錯的信息輸出,2特別要注意空格,比如文件名中存在空格的情況,文件名中的空格可以用引號來引起來,從而不會影響命令的正確執行,但有些地方的空格不能這麼簡單的處理,那麼可以通過傳遞一個數組給exec()方法來解決,數組有過缺點,就是當命令參數比較多的話,可讀性比較差,彌補的方法就是還用字符串,不過把必須有空格的地方用一個特殊字符串來替換,等命令字符串拼接好了後再來處理這個字符串,把它變成數組,同時記得把剛纔的特殊字符串換成空格。
Process process = Runtime.getRuntime().exec(cmd);
InputStream fis = process.getInputStream();
BufferedReader br = new BufferedReader(new InputStreamReader(fis));
String line = null;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
int flag = process.exitValue(); //可以通過flag來判斷命令是否執行成功