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 然後執行給定的命令。