dos如何使用java
使用 Java 操作 DOS(命令行)
Java 提供了多种方式与操作系统命令行(DOS)交互,主要通过 Runtime 和 ProcessBuilder 类实现。以下是常见方法:
执行 DOS 命令
通过 Runtime.getRuntime().exec() 方法可以运行外部命令,例如:
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);
}
process.waitFor();
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
cmd /c 表示执行命令后关闭窗口,dir 是 DOS 命令示例。
使用 ProcessBuilder 增强控制
ProcessBuilder 提供更灵活的进程管理,支持重定向输入/输出:
ProcessBuilder builder = new ProcessBuilder("cmd", "/c", "ping 127.0.0.1");
builder.redirectErrorStream(true); // 合并错误流和输出流
Process process = builder.start();
try (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 (IOException | InterruptedException e) {
e.printStackTrace();
}
处理带空格的命令或参数
若命令参数包含空格(如路径),需拆分参数:
ProcessBuilder builder = new ProcessBuilder("cmd", "/c", "echo", "Hello World");
异步执行长时间任务
对于耗时命令(如 ping),建议异步读取输出以避免阻塞:

new Thread(() -> {
try {
Process process = new ProcessBuilder("cmd", "/c", "ping -n 5 127.0.0.1").start();
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
} catch (IOException e) {
e.printStackTrace();
}
}).start();
注意事项
- 路径处理:Windows 中使用反斜杠(
\)需转义(如"C:\\\\path"),或使用/替代。 - 权限问题:某些命令(如
shutdown)可能需要管理员权限。 - 错误流处理:始终检查
process.getErrorStream()以避免遗漏错误信息。
通过以上方法,可以在 Java 程序中灵活调用 DOS 命令并处理结果。






