1. 程式人生 > >java下執行DOS命令,讀取輸出

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();

}

}