1. 程式人生 > >Java呼叫DOS指令,並將控制檯中顯示的內容輸出。

Java呼叫DOS指令,並將控制檯中顯示的內容輸出。

用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"));
		}
	}