java怎么執(zhí)行shell命令并返回結(jié)果

小億
287
2023-09-15 11:58:37

在Java中,可以使用ProcessBuilder類(lèi)來(lái)執(zhí)行shell命令并返回結(jié)果。

下面是一個(gè)例子:

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
public class ExecuteShellCommand {
public static void main(String[] args) {
String command = "ls"; // 要執(zhí)行的shell命令
try {
// 創(chuàng)建ProcessBuilder對(duì)象
ProcessBuilder processBuilder = new ProcessBuilder(command);
// 使用ProcessBuilder執(zhí)行命令
Process process = processBuilder.start();
// 通過(guò)process的輸入流獲取命令執(zhí)行結(jié)果
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
// 等待命令執(zhí)行完成
int exitCode = process.waitFor();
System.out.println("\n命令執(zhí)行完畢,Exit Code : " + exitCode);
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
}

在這個(gè)例子中,ProcessBuilder對(duì)象被用來(lái)創(chuàng)建一個(gè)子進(jìn)程來(lái)執(zhí)行指定的命令。然后,通過(guò)getInputStream()方法獲取命令執(zhí)行結(jié)果的輸入流,并通過(guò)BufferedReader讀取輸出。最后,使用waitFor()方法等待命令執(zhí)行完成,并獲取命令的退出碼。

上述例子中,執(zhí)行的是ls命令,如果要執(zhí)行其他命令,只需要將command變量替換為所需的命令即可。

0