系列說明
淺析Java.lang.Runtime類
淺析Java.lang.Process類
淺析Java.lang.ProcessBuilder類
可以使用java中的ProcessBuilder執行本地命令或腳本等工作
以下是一個簡單的使用java調用本地python腳本的例子
List<String> commands=new ArrayList(); commands.add("python"); commands.add(pkg); commands.add("--ad=test"); //...其它參數添加 processBuilder.command(commands); processBuilder.directory(path);//切換工作目錄 processBuilder.redirectErrorStream(true); Process process = processBuilder.start(); StringBuilder result = new StringBuilder(); final BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream())); try { String line; while ((line = reader.readLine()) != null) { result.append(line); LOGGER.info(processBuilder.command().toString() + " --->: " + line); } } catch (IOException e) { LOGGER.warn("failed to read output from process", e); } finally { IOUtils.closeQuietly(reader); } process.waitFor(); int exit = process.exitValue(); if (exit != 0) { throw new IOException("failed to execute:" + processBuilder.command() + " with result:" + result); } else { return exit; }
