前言
为了加快调研项目的速度,很多人会选择混合编程,当想一次性执行完整套流程时,不免会需要调用其他程序。
这里就给大家介绍如何在java环境下调用shell程序。
方法
在java中,Runtime.getRuntime().exec()方法给我们提供了这个功能,而且Runtime.getRuntime()给我们提供了以下几种exec()方法:
Process exec(String command)
在单独的进程中执行指定的字符串命令。
Process exec(String[] cmdarray)
在单独的进程中执行指定命令和变量。
Process exec(String[] cmdarray, String[] envp)
在指定环境的独立进程中执行指定命令和变量。
Process exec(String[] cmdarray, String[] envp, File dir)
在指定环境和工作目录的独立进程中执行指定的命令和变量。
Process exec(String command, String[] envp)
在指定环境的单独进程中执行指定的字符串命令。
Process exec(String command, String[] envp, File dir)
在有指定环境和工作目录的独立进程中执行指定的字符串命令。
代码
提供个简单示例代码:
try {
Runtime runtime = Runtime.getRuntime();
String script = SCRIPT_FILEPATH;
ProcessBuilder builder = new ProcessBuilder("/bin/chmod", "755", script);
Process process = builder.start();
process.waitFor();
Process pro = runtime.exec("/bin/sh -c " + script);
int status = pro.waitFor();
if (status != 0) {
System.out.println("Failed to call shell's command ");
} else {
BufferedReader input = new BufferedReader(new InputStreamReader(pro.getInputStream()));
String line;
while ((line = input.readLine()) != null) {
System.out.println(line.trim());
}
input.close();
}
} catch (Exception e) {
e.printStackTrace();
}