下面是详细讲解“java调用shell命令并获取执行结果的示例”的完整攻略。
1. Java如何调用Shell命令
在Java中执行Shell命令,可以使用Runtime
或ProcessBuilder
类。
1.1 使用Runtime类调用Shell命令
String command = "ls -l";
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec(command); // 执行Shell命令
使用Runtime
类的exec
方法执行Shell命令,返回一个Process
对象。
1.2 使用ProcessBuilder类调用Shell命令
String command = "pwd";
ProcessBuilder processBuilder = new ProcessBuilder(command);
Process process = processBuilder.start(); // 执行Shell命令
使用ProcessBuilder
类构建Shell命令,返回一个Process
对象。
2. 获取Shell命令执行结果
获取Shell命令执行结果,需要从Process
对象中获取输入流,再通过IO输出流的方式获取执行结果。
String result = "";
InputStream inputStream = process.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String line = null;
while ((line = bufferedReader.readLine()) != null) {
result += line + "\n"; // 将结果拼接为完整的字符串
}
通过getInputStream()
方法获取Process
对象的输入流,再通过BufferedReader
类按行读取输入流中的内容。
注意:要将每行内容拼接在一起,得到完整的执行结果。
3. 完整示例程序
综合以上内容,下面给出两个Java调用Shell命令并获取执行结果的完整示例程序。
3.1 示例一
import java.io.*;
public class ShellDemo1 {
public static void main(String[] args) {
String command = "ls -l";
Runtime runtime = Runtime.getRuntime();
try {
Process process = runtime.exec(command);
String result = "";
InputStream inputStream = process.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String line = null;
while ((line = bufferedReader.readLine()) != null) {
result += line + "\n";
}
System.out.println("执行结果:\n" + result);
process.waitFor(); // 阻塞等待Shell命令执行完毕
} catch (Exception e) {
e.printStackTrace();
}
}
}
这个示例使用Runtime
类执行Shell命令ls -l
,获取命令执行结果并输出。
3.2 示例二
import java.io.*;
public class ShellDemo2 {
public static void main(String[] args) {
String command = "pwd";
ProcessBuilder processBuilder = new ProcessBuilder(command);
try {
Process process = processBuilder.start();
String result = "";
InputStream inputStream = process.getInputStream();
BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(inputStream));
String line = null;
while ((line = bufferedReader.readLine()) != null) {
result += line + "\n";
}
System.out.println("执行结果:\n" + result);
process.waitFor(); // 阻塞等待Shell命令执行完毕
} catch (Exception e) {
e.printStackTrace();
}
}
}
这个示例使用ProcessBuilder
类构建Shell命令pwd
,获取命令执行结果并输出。
通过以上示例程序,我们了解了Java如何调用Shell命令并获取执行结果。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:java调用shell命令并获取执行结果的示例 - Python技术站