在Java中执行终端命令,可以使用Runtime类的exec()方法或ProcessBuilder类来创建一个进程。下面是两种方式的示例代码:
使用Runtime类
String command = "ls -al";
Process process = Runtime.getRuntime().exec(command);
// 读取命令执行结果
InputStream inputStream = process.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
// 等待命令执行完毕
process.waitFor();
// 关闭资源
reader.close();
inputStream.close();
上面代码执行了ls -al命令,并读取了命令执行的结果。
使用ProcessBuilder类
List<String> commandList = Arrays.asList("ls", "-al");
ProcessBuilder processBuilder = new ProcessBuilder(commandList);
Process process = processBuilder.start();
// 读取命令执行结果
InputStream inputStream = process.getInputStream();
BufferedReader reader = new BufferedReader(new InputStreamReader(inputStream));
String line;
while ((line = reader.readLine()) != null) {
System.out.println(line);
}
// 等待命令执行完毕
process.waitFor();
// 关闭资源
reader.close();
inputStream.close();
上面代码同样执行了ls -al命令,并读取了命令执行的结果。其中,使用了ProcessBuilder类的方式更加灵活,可以更方便地设置环境变量、工作目录等参数。
需要注意的是,在执行命令时,可能会抛出异常,例如命令不存在、权限不足等。在处理异常时,需要及时关闭资源,并根据实际情况进行判断和处理。