jdk1.8环境下写一个可以执行多条Linux命令,并将所有输出结果以List形式返回的方法
时间: 2024-02-24 13:59:33 浏览: 20
可以使用Java的ProcessBuilder类来执行Linux命令,并将命令输出结果保存到List中。下面是一个示例代码:
```java
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
public class CommandExecutor {
public static List<String> executeCommands(String... commands) throws IOException, InterruptedException {
ProcessBuilder processBuilder = new ProcessBuilder(commands);
processBuilder.redirectErrorStream(true);
Process process = processBuilder.start();
BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));
List<String> output = new ArrayList<>();
String line;
while ((line = reader.readLine()) != null) {
output.add(line);
}
int exitCode = process.waitFor();
if (exitCode != 0) {
throw new RuntimeException("Command execution failed with exit code " + exitCode);
}
return output;
}
}
```
这个方法接受一个或多个Linux命令作为参数,并返回一个List,其中包含所有命令的输出结果。如果任何一个命令执行失败,将抛出一个RuntimeException异常。使用示例:
```java
List<String> output = CommandExecutor.executeCommands("ls", "-la", "/tmp");
for (String line : output) {
System.out.println(line);
}
```
这个示例将会执行ls -la /tmp命令,并将所有输出结果打印到控制台。