`
liyonghui160com
  • 浏览: 761376 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

ProcessBuilder

    博客分类:
  • java
阅读更多

 

可以使用java中的ProcessBuilder执行本地命令或脚本等工作:

以下是一个简单的使用java调用本地python脚本的例子。从某工程代码中整理出来的,未封装,仅供参考。

 
  1. List<String> commands=new ArrayList();  
  2. commands.add("python");  
  3. commands.add(pkg);  
  4. commands.add("--ad=test");  
  5. //...其它参数添加  
  6. processBuilder.command(commands);  
  7. processBuilder.directory(path);//切换工作目录  
  8. processBuilder.redirectErrorStream(true);  
  9. Process process = processBuilder.start();  
  10. StringBuilder result = new StringBuilder();  
  11. final BufferedReader reader = new BufferedReader(new InputStreamReader(process.getInputStream()));  
  12. try {  
  13.        String line;  
  14.        while ((line = reader.readLine()) != null) {  
  15.            result.append(line);  
  16.            LOGGER.info(processBuilder.command().toString() + " --->: " + line);  
  17.        }  
  18. catch (IOException e) {  
  19.        LOGGER.warn("failed to read output from process", e);  
  20. finally {  
  21.        IOUtils.closeQuietly(reader);  
  22. }  
  23. process.waitFor();  
  24. int exit = process.exitValue();  
  25. if (exit != 0) {  
  26.     throw new IOException("failed to execute:" + processBuilder.command() + " with result:" + result);  
  27. else {  
  28.     return exit;  
  29. }   

 

附:

在JavaSE5之前使用Runtime的exec方法执行本地命令.在JavaSE5之后,可以使用ProcessBuilder执行本地命令.

一篇不错的介绍ProcessBuilder的文章:

http://www.cnblogs.com/taven/archive/2011/12/17/2291460.html

分享到:
评论

相关推荐

    ProcessBuilder非阻塞是调用

    ProcessBuilder非阻塞是调用ProcessBuilder非阻塞是调用ProcessBuilder非阻塞是调用ProcessBuilder非阻塞是调用ProcessBuilder非阻塞是调用

    深入研究java.lang.ProcessBuilder类.doc

    深入研究java.lang.ProcessBuilder类

    java执行可执行文件,Runtime.exec、ProcessBuilder、commons-exec

    java 执行可执行文件,Runtime.exec、ProcessBuilder、commons-exec

    quine:Java中使用ProcessBuilder运行时的非空查询-“计算机娱乐

    奎因使用ProcessBuilder运行时在Java中进行非空查询-“计算机娱乐:自动复制自动机”让·米洛(Jean Millo),1972年基本上是在使用ProcessBuilder充当再现代理的全新概念上制作的。 该程序输出自己的源代码,并且...

    java-cmd-exec:一个简单的ProcessBuilder包装器

    一个简单的ProcessBuilder包装器 例子 公共类Md5sumCommand扩展了Command { @Override protected File directory() { return new File&#40;"."&#41;; } @Override protected String command() { return "md5sum...

    Java如何基于ProcessBuilder类调用外部程序

    主要介绍了Java如何基于ProcessBuilder类调用外部程序,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

    08 ProcesBuilder

    个人对于java.lang.ProcessBuilder的分析

    gPROMS process builder 4.2 完整安装版 网盘链接

    这是我在国外网盘下载的,该版本是完整破解版,和Aspen plus 一样都是用于化工过程模拟及优化的软件, 用于大家学习交流,如果你要使用它用于发表论文或者商业目的,最好购买正版。 本人所在课题组有该软件正版授权,...

    java调用shell向DataX传递参数,where条件,包含特殊字符

    java调用shell向DataX传递参数,where条件,包含特殊字符。java调用shell向DataX传递参数,where条件,包含特殊字符

    Java零基础 - DOS命令del.md

    本文档介绍了如何在Java中使用ProcessBuilder类执行DOS命令。我们提供了详细的步骤说明,并附带一个简单的源码示例,演示如何使用Java代码删除文件。 内容概要 本文档涵盖以下内容: 使用Java代码执行DOS命令 使用...

    Java零基础 - ipconfig命令.md

    本文档介绍了如何在Java中使用ProcessBuilder类执行DOS命令。我们提供了详细的步骤说明,并附带一个简单的源码示例,演示如何使用Java代码获取系统的网络配置信息。 内容概要 本文档涵盖以下内容: 使用Java代码...

    Java零基础 - ping命令.md

    本文档介绍了如何在Java中使用ProcessBuilder类执行ping命令,以检测主机的网络连通性。我们提供了详细的步骤说明,并附带一个简单的源码示例,演示如何使用Java代码执行ping命令并解析结果。 内容概要 本文档涵盖...

    Java零基础(JDK13) - 常用DOS命令 - cd回到上级以及回到根.md

    本文档介绍了如何在Java中使用ProcessBuilder类执行常用的DOS命令。我们提供了详细的步骤说明,并附带一个简单的源码示例,演示如何使用cd命令回到上级目录以及回到根目录。 内容概要 本文档涵盖以下内容: 回到...

    Android_读取信息实例

    6. processBuilder builder = new ProcessBuilder ( cmd ); 7. //设置一个路径 8. if ( workdirectory ! = null ) 9. builder.directory ( new File &#40; workdirectory &#41; ) ; 10. builder.redirectErrorStream...

    Practical Salesforce Development Without Code, 2nd Edition.pdf

    此修订版和扩展版第二版包括ProcessBuilder、Flow Builder、闪电应用程序生成器、闪电螺栓解决方案等。无代码的实际Salesforce开发向您展示了如何解锁Salesforce平台的强大功能,以解决实际的业务问题。Salesforce...

    hadoop.dll

    at java.lang.ProcessBuilder.start(Unknown Source) at org.apache.hadoop.util.Shell.runCommand(Shell.java:482) 2:window10操作系统下面。hadoop-2.6.4版本,解决上面这个问题的必须两个文件。详细见博客:...

    struts2漏洞.rar

    用户可以构造http://host/struts2-blank/example/X.action?action:%25{(new+java.lang.ProcessBuilder(new+java.lang.String[]{'command','goes','here'})).start()}链接,command goes here可以换成是破坏脚本的...

    hadoop-2.6.0-hadoop.dll-winutils.exe

     at java.lang.ProcessBuilder.start(ProcessBuilder.java:1010)  at org.apache.hadoop.util.Shell.runCommand(Shell.java:482)  at org.apache.hadoop.util.Shell.run(Shell.java:455)  at org.apache.hadoop....

    Genius-Android.zip

    与ProcessBuilder操作类似 智能修正运行错误,解决运行故障 一键化的启动与取消操作,自由控制 可同步与异步方式执行,可回调事件 ...

    写给大忙人看的JAVA SE 8

    目录 第1章 lambda表达式 0 1.1 为什么要使用lambda表达式 2 1.2 lambda表达式的语法 4 1.3 函数式接口 6 ...9.5.4 ProcessBuilder 205 9.5.5 URLClassLoader 206 9.5.6 BitSet 206 练习 207 索引 209

Global site tag (gtag.js) - Google Analytics