Java呼叫DOS指令,並將控制檯中顯示的內容輸出。
阿新 • • 發佈:2019-01-23
用Java呼叫DOS指令可以方便很多,但是普通的使用,DOS執行完後就會自己關掉,我們無法獲得執行後的資訊。
因此有兩種方法。
1.讓執行後的DOS停留在視窗(但我們並獲取不到輸出的值)。
2.將控制檯的內容列印下來。
這裡只對方法二進行解釋。
第一步:開啟子執行緒執行DOS指令
Process proc = null;
String[] cmd = { "cmd", "/c", cmdString };
proc = Runtime.getRuntime().exec(cmd);
第二部:獲取控制檯的位元組流
InputStream inputStream = proc.getInputStream(); InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8"); BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
第三步:從位元組流中讀取資料
String line;
StringBuffer output = new StringBuffer();
while ((line = bufferedReader.readLine()) != null) {
output.append(line + "\r\n");
}
最終發一下所有程式碼:
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; public class text { public static String getWSOutput(String cmdString) throws IOException{ // 1、開啟子執行緒執行Cmd命令 Process proc = null; String[] cmd = { "cmd", "/c", cmdString }; proc = Runtime.getRuntime().exec(cmd); // 2、獲取子執行緒InputStream InputStream inputStream = proc.getInputStream(); InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8"); BufferedReader bufferedReader = new BufferedReader(inputStreamReader); // 3、從流中讀取資料 String line; StringBuffer output = new StringBuffer(); while ((line = bufferedReader.readLine()) != null) { output.append(line + "\r\n"); } // 4、返回結果 return output.toString(); } public static void main(String[] args) throws IOException { System.out.println(text.getWSOutput("systeminfo")); } }