java如何调用cmd
Java调用CMD命令的方法
在Java中可以通过Runtime或ProcessBuilder类来执行CMD命令。以下是具体实现方式:

使用Runtime类
try {
// 执行单条命令
Process process = Runtime.getRuntime().exec("cmd /c dir");
// 获取命令输出
BufferedReader reader = new BufferedReader(
new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
// 等待命令执行完成
int exitCode = process.waitFor();
System.out.println("Exit Code: " + exitCode);
} catch (Exception e) {
e.printStackTrace();
}
使用ProcessBuilder类
try {
// 创建ProcessBuilder对象
ProcessBuilder builder = new ProcessBuilder("cmd", "/c", "ping 127.0.0.1");
// 合并错误流到标准输出
builder.redirectErrorStream(true);
// 启动进程
Process process = builder.start();
// 读取输出
BufferedReader reader = new BufferedReader(
new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
// 等待完成
int exitCode = process.waitFor();
System.out.println("Exit Code: " + exitCode);
} catch (Exception e) {
e.printStackTrace();
}
注意事项
- 复杂命令需要使用
cmd /c前缀 - 多条命令可用
&&连接,如cmd /c "cd C:\\ && dir" - 带空格的路径需要用引号包裹
- 建议使用
ProcessBuilder,它提供更灵活的参数设置
处理特殊字符
当命令包含特殊字符时,需要进行适当转义:
// 带空格和特殊字符的路径处理
String path = "\"C:\\Program Files\\Java\"";
ProcessBuilder builder = new ProcessBuilder("cmd", "/c", "dir " + path);
异步执行
如果需要异步执行命令,可以创建新线程:
new Thread(() -> {
try {
Process process = Runtime.getRuntime().exec("cmd /c ping localhost");
// 处理输出...
} catch (Exception e) {
e.printStackTrace();
}
}).start();







