Java中ProcessBuilder使用
2016-07-28 08:49
549 查看
可以使用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", 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; }
附:
在JavaSE5之前使用Runtime的exec方法执行本地命令.在JavaSE5之后,可以使用ProcessBuilder执行本地命令.
一篇不错的介绍ProcessBuilder的文章:
http://www.cnblogs.com/taven/archive/2011/12/17/2291460.html
相关文章推荐
- what does “static int function(…) __acquires(..) __releases(…){” mean?
- [转]Quick Tip: Error: 18456, Severity: 14, State: 38.
- POJ-2533-Longest Ordered Subsequence
- Java中String、StringBuffer和StringBuilder
- 86.View the Exhibit to examine the output for the CROSSCHECK BACKUP command. Which statement is true
- vue.js表单数据双向绑定
- ProgressBar(进度条)
- HDU 3415 Max Sum of Max-K-sub-sequence(长度不超过k的最大连续子序列和,单调队列)
- android开发仿ios的UIScrollView
- Android_UI:ViewPager
- [leetcode]115. Distinct Subsequences
- MalformedByteSequenceException: Invalid byte 1 of 1-byte
- POJ 2127 Greatest Common Increasing Subsequence
- Database ORAchk and EXAchk User’s Guide
- iOS剪切板 UIPasteboard
- UITextView不能滑动及显示不全问题(iOS7)
- poj 2533 Longest Ordered Subsequence
- Error:Jack is required to support java 8 language features. Either enable Jack or remove sourceCompa
- webpack-dev-server+vue构建开发环境(一)
- ios 不能点击UITableViewCell里的控件