java之ProcessBuilder執行系統命令
阿新 • • 發佈:2019-01-24
轉自:http://blog.csdn.net/yasha009/article/details/52051629
可以使用java中的ProcessBuilder執行本地命令或指令碼等工作:
以下是一個簡單的使用java呼叫本地python指令碼的例子。從某工程程式碼中整理出來的,未封裝,僅供參考。
JAVA 程式碼:
- 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"
- } finally {
- IOUtils.closeQuietly(reader);
- }
- process.waitFor();
- int exit = process.exitValue();
- if (exit != 0) {
- thrownew IOException("failed to execute:" + processBuilder.command() + " with result:" + result);
- } else {
- return exit;
- }
附:
在JavaSE5之前使用Runtime的exec方法執行本地命令.在JavaSE5之後,可以使用ProcessBuilder執行本地命令.
一篇不錯的介紹ProcessBuilder的文章: