java下執行DOS命令,讀取輸出
最近在學習DOS命令,覺得應該做一個客戶端來執行DOS命令,恰好學習過java,就使用java執行DOS命令,
在網上查找了許久,發現大同小異,不過還是要感謝大家的分享。
關於怎麼運用,我總結了一下幾點:
關鍵點
1.java下怎麼執行DOS命令
Process process = Runtime.getRuntime().exec("cmd /c dir c:");
2.DOS下的輸出通過什麼獲取
InputStream in=process.getInputStream(); //獲取DOS下的輸出
3.讀取
//先儲存再輸出
//inttemp,i=0;
//byte b[]=new byte[10240];
//while((temp=in.read())!=-1){
//b[i]=(byte)temp;
//i++;
//}
//System.out.println(new String(b));
//一邊讀一邊輸出
Scanner scan=new Scanner(in);
while(scan.hasNextLine())
System.out.println(scan.nextLine());
scan.close();
經過幾次嘗試,發現讀取DOS下輸出使用Scanner比較方便
下面是一段完整的程式碼
package com.ly.dos;
// 儘管解決了顯示輸出的問題,但是byte開闢空間大小的問題尚未解決
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
public class TestExec {
Process process;
public static void main(String[] args) {
TestExec test = new TestExec();
//String open = "cmd.exe /c start call tree /f";
String open = "cmd.exe /c dir f:";
if (args.length == 0) {
test.exec(open);
}
}
public void sendParams(String params) {
}
public void exec(String cmd) {
Runtime run = Runtime.getRuntime();
try {
process= run.exec(cmd);
InputStream in=process.getInputStream(); //獲取DOS下的輸出
int temp,i=0;
byte b[]=new byte[10240];
while((temp=in.read())!=-1){
b[i]=(byte)temp;
i++;
}
System.out.println(new String(b));
} catch (IOException e) {
e.printStackTrace();
}
}
}