Java 代码执行 shell 命令是 Java 开发中常用的一项功能,通过该功能我们可以在 Java 代码中调用 shell 命令来执行一些操作,例如创建文件、删除文件、修改权限等。实现方式有很多种,比如使用 Runtime 类、Process 类、ProcessBuilder 类等。下面我将为大家介绍一些实现 Java代码执行 shell 命令的攻略。
1. 使用 Runtime 类
import java.io.IOException;
public class RunTimeDemo {
public static void main(String[] args) throws IOException {
Runtime runtime = Runtime.getRuntime();
Process process = runtime.exec("ls -l");
process.waitFor();
//读取输出
byte[] bytes = new byte[1024];
int len = process.getInputStream().read(bytes);
System.out.println(new String(bytes, 0, len));
// 错误输出
len = process.getErrorStream().read(bytes);
System.out.println(new String(bytes, 0, len));
}
}
在上面的示例中,我们通过 Runtime 类获取了当前系统的运行时,并通过 exec 方法执行了一个简单的 shell 命令,输出当前目录下的所有文件和文件夹。最后通过输入流分别读取了命令输出及错误输出的数据并输出到控制台。
2. 使用 ProcessBuilder 类
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.List;
public class ProcessBuilderDemo {
public static void main(String[] args) throws Exception{
List<String> commands = new ArrayList<>();
commands.add("sh");
commands.add("-c");
commands.add("ls -l");
ProcessBuilder processBuilder = new ProcessBuilder(commands);
Process process = processBuilder.start();
BufferedReader br = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line = null;
while ((line = br.readLine()) != null) {
System.out.println(line);
}
process.waitFor();
}
}
在上面的示例中,我们使用了 ProcessBuilder 类来构建出完整的 shell 命令,在这里和上面第一个示例不同,我们把 shell 程序即可作为参数列表单独传递,并通过 start 方法运行命令。最终通过读取输入流获取命令输出,在输出到控制台。
以上是两个实际案例,其中通过使用 Runtime 和 ProcessBuilder 两个类,分别实现了 Java 代码调用 shell 命令的功能。当然,除了这两种方案,还有其他类缺省的方式去实现该功能。一般来说,我们可以根据实际情况和需求的不同,采用最适合自己的方式来去实现该功能。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Java代码执行shell命令的实现 - Python技术站