Runtime.getRuntime().exec()方法主要用於執行外部的程序或命令。Runtime.getRuntime().exec共有六個重載方法 :
其中public Process exec(String command)方法在單獨的進程中執行指定的字符串命令。
關於返回結果類型:Process,它有幾個方法:
1.destroy():殺掉子進程
2.exitValue():返回子進程的出口值,值 0 表示正常終止
3.getErrorStream():獲取子進程的錯誤流
4.getInputStream():獲取子進程的輸入流
5.getOutputStream():獲取子進程的輸出流
6.waitFor():導致當前線程等待,如有必要,一直要等到由該 Process 對象表示的進程已經終止。如果已終止該子進程,此方法立即返回。如果沒有終止該子進程,調用的線程將被阻塞,直到退出子進程,根據慣例,0 表示正常終止
使用時以一些需要注意的地方:
等待命令執行結束用waitFor(),其返回值就是命令的返回值。 如果出現程序執行被掛起,沒有任何反應的情況,是由於沒有讀取命令子進程的正常輸出流或錯誤輸出流導致緩沖區被占滿,進程被鎖住。這個時候需要把輸出流中的內容給讀出來。最好的做法是使用兩個線程,分別同時讀取正常輸出流和錯誤輸出流。
Runtime.exec() 不等同於直接執行command line命令!Runtime.exec()很有局限性,對有些命令不能直接把command line里的內容當作String參數傳給exec(). 比如重定向等命令。舉個例子: javap -l xxx > output.txt 這時要用到exec的第二種重載,即input 參數為String[]: Process p = Runtime.getRuntime().exec(new String[]{“/bin/sh”,”-c”,”javap -l xxx > output.txt”});
如果觉得《java中exec命令 使用Java中的Runtime.exec()執行Windows命令》对你有帮助,请点赞、收藏,并留下你的观点哦!