Java如何高效实现控制台命令行(cmd)的输出显示?
- 后端开发
- 2025-10-19
- 8
在Java中,可以通过多种方式获取命令行(cmd)的输出,以下是一些常见的方法和步骤:

使用ProcessBuilder类
ProcessBuilder类是Java中用于启动和管理外部进程的类,以下是一个简单的例子,演示如何使用ProcessBuilder来获取cmd命令的输出:
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class CmdOutputExample { public static void main(String[] args) { ProcessBuilder processBuilder = new ProcessBuilder("cmd", "/c", "echo Hello World"); try { Process process = processBuilder.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 (IOException | InterruptedException e) { e.printStackTrace(); } } }
使用Runtime.exec()方法
Runtime.exec()方法也是Java中启动外部进程的一种方式,以下是一个使用Runtime.exec()的例子:

使用exec()方法(适用于Windows)
对于Windows系统,可以使用exec()方法来启动cmd并执行命令,以下是一个例子:
import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; public class CmdOutputExample { public static void main(String[] args) { try { Process process = Runtime.getRuntime().exec("cmd.exe /c echo Hello World"); 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 | ProcessBuilder类 | 提供了更多高级功能,如重定向输入输出流 | 代码相对复杂 |
| Runtime.exec() | Runtime.getRuntime().exec() | 简单易用 | 功能相对有限 |
| exec() | Runtime.getRuntime().exec() | 简单易用 | 适用于Windows系统 |
FAQs
Q1:如何在Java中获取cmd命令的输出?
A1:在Java中,可以使用ProcessBuilder类或Runtime.exec()方法来获取cmd命令的输出,这两种方法都需要捕获命令的输出流,并读取其中的内容。
Q2:使用ProcessBuilder和Runtime.exec()有什么区别?
A2:ProcessBuilder类提供了更多高级功能,如重定向输入输出流,而Runtime.exec()方法则相对简单易用,通常情况下,如果需要更复杂的功能,建议使用ProcessBuilder类。
