java下执行DOS命令,读取输出

时间:2022-09-02 20:20:04

最近在学习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.读取

//先储存再输出

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

//一边读一边输出

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

}

}