HOWTO · Java

在 Java 中运行命令行

本文演示了如何在 Java 中使用 Process Builder 和 Runtime.getRuntime.exec 运行命令行。

本页内容

本文演示了如何在 Java 中运行命令并显示输出。

在 Java 中使用 Runtime.getRuntime().exec() 运行命令

Runtime.getRuntime().exec() 是 Java 运行命令的内置功能。

例子:

import java.io.*;
public class cmd_class {
  public static void main(String[] args) throws Exception {
    Process runtime = Runtime.getRuntime().exec("ping www.delftstack.com");
    Show_Output(runtime);
  }
  public static void Show_Output(Process process) throws IOException {
    BufferedReader output_reader =
        new BufferedReader(new InputStreamReader(process.getInputStream()));
    String output = "";
    while ((output = output_reader.readLine()) != null) {
      System.out.println(output);
    }
  }
}

上面的代码通过 Runtime.getRuntime().exec() 运行命令,并使用用户定义的函数 Show_Output() 显示输出。

输出:

Pinging www.delftstack.com [3.66.136.156] with 32 bytes of data:
Request timed out.
Request timed out.
Request timed out.
Request timed out.

Ping statistics for 3.66.136.156:
    Packets: Sent = 4, Received = 0, Lost = 4 (100% loss),

输出将与命令行中的相同。ping www.delftstack.com 的请求超时。

在 Java 中使用 Process Builder 运行命令

Process Builder 库还用于在 Java 中运行命令。

例子:

import java.io.*;

public class cmd_class {
  public static void main(String[] args) throws Exception {
    ProcessBuilder build_test = new ProcessBuilder("cmd.exe", "/c", "java -version");
    build_test.redirectErrorStream(true);
    Process p = build_test.start();
    Show_Results(p);
  }
  public static void Show_Results(Process p) throws IOException {
    BufferedReader output_reader = new BufferedReader(new InputStreamReader(p.getInputStream()));
    String output = "";
    while ((output = output_reader.readLine()) != null) {
      System.out.println(output);
    }
  }
}

上面的代码使用 Process Builder 功能运行命令 java -version

输出:

java version "17.0.2" 2022-01-18 LTS
Java(TM) SE Runtime Environment (build 17.0.2+8-LTS-86)
Java HotSpot(TM) 64-Bit Server VM (build 17.0.2+8-LTS-86, mixed mode, sharing)

进程构建器打开 cmd 然后运行给定的命令。