您的位置:首页 > 编程语言 > Java开发

Java中调用windows cmd命令的两种方式

2015-04-28 17:25 621 查看

Java中调用windows cmd命令的方式

使用Runtime方式进行命令调用

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class CmdTest{

private static List<String> cmdList = new ArrayList<String>();

public static void main(String[] args){

initCmdList();

try {
//执行命令
Process p = Runtime.getRuntime().exec(cmdList.toArray(new String[0]));

} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}

}

private static void initCmdList(){
cmdList.add("cmd.exe");
cmdList.add("/c");
cmdList.add("ipconfig");
}

}


在上面的代码中使用了cmdList.toArray()作为参数,而不是直接使用一个String作为参数,是因为当命令列表中存在很多参数的时候,可能会涉及到很多空格,使用数组的方式调用,可以避免写空格的过程中出现错误.

使用ProcessBuilder方式进行命令调用

import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

public class CmdTest{

private static List<String> cmdList = new ArrayList<String>();

public static void main(String[] args){

initCmdList();

ProcessBuilder pb = new ProcessBuilder(cmdList);

//      ProcessBUilder pb = new ProcessBuilder();
//      pb.command(cmdList);

try {
//执行命令
pb.start();
//如果有返回值,d

} catch (IOException e) {
// TODO 自动生成的 catch 块
e.printStackTrace();
}

}

private static void initCmdList(){
cmdList.add("cmd.exe");
cmdList.add("/c");
cmdList.add("ipconfig");
}

}


ProcessBuilder 接收一个List作为命令列表,其中List中的每一个参数都会用空格隔开,同样也方便设置较为复杂的参数,以免出错.

ProcessBuilder和Runtime不同的地方在于,

Runtime的命令参数可以一次性写完整,或者使用数组的方式将命令分割.

ProcessBuilder的命令如果有空格,必须使用List的方式进行分割.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: