前言
为了加快调研项目的速度,很多人会选择混合编程,当想一次性执行完整套流程时,不免会需要调用其他程序。
这里就给大家介绍如何在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(); }