在Java中执行Linux命令可以使用Runtime类的exec方法或ProcessBuilder类来实现。下面是两种方法的示例代码:
1. 使用Runtime类的exec方法执行Linux命令:
```java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class ExecuteCommand {
public static void main(String[] args) {
try {
Process process = Runtime.getRuntime().exec("ls -l");
int exitCode = process.waitFor();
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
if (exitCode == 0) {
System.out.println("Command executed successfully");
} else {
System.out.println("Command execution failed");
}
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
}
```
2. 使用ProcessBuilder类执行Linux命令:
```java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.List;
public class ExecuteCommand {
public static void main(String[] args) {
try {
ProcessBuilder processBuilder = new ProcessBuilder("ls", "-l");
Process process = processBuilder.start();
int exitCode = process.waitFor();
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
if (exitCode == 0) {
System.out.println("Command executed successfully");
} else {
System.out.println("Command execution failed");
}
} catch (IOException | InterruptedException e) {
e.printStackTrace();
}
}
}
```
这两种方法的区别在于ProcessBuilder类提供了更灵活和可控的操作方式,可以设置工作目录、环境变量等。
请注意,执行任意命令都存在安全风险,请谨慎使用并确保不会执行恶意命令。