`
liyonghui160com
  • 浏览: 774508 次
  • 性别: 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 非阻塞是调用是指在 Java 中使用 ProcessBuilder 类来执行外部命令或程序时,如何实现非阻塞调用。 在 Java 中,使用 ProcessBuilder 类可以执行外部命令或程序,...

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

    Java中的`java.lang.ProcessBuilder`类是在J2SE 1.5版本中引入的,用于创建和管理操作系统的进程。这个类提供了比`java.lang.Process`更精细的控制,允许开发者指定启动进程的工作目录、环境变量以及错误和输出流的...

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

    `ProcessBuilder`类用于创建操作系统进程,每个`ProcessBuilder`实例管理一系列进程属性,通过`start()`方法创建一个新的`Process`实例。 **代码示例** ```java import java.io.BufferedReader; import java.io....

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

    Java如何基于ProcessBuilder类调用外部程序 Java中的ProcessBuilder类提供了一种方便的方式来调用外部程序。通过ProcessBuilder类,可以轻松地执行外部命令,并获取其输出结果。在本文中,我们将详细介绍如何使用...

    08 ProcesBuilder

    ### Java中的ProcessBuilder类详解 #### 一、概述 `ProcessBuilder`是Java的一个核心类,位于`java.lang`包下,主要用于创建操作系统进程。它允许用户通过一系列配置(如命令行参数、环境变量等)来启动外部程序,...

    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上传调用ffmpeg转码截图截取视频

    在Java中,我们可以使用Runtime类或ProcessBuilder类来执行系统命令。例如,我们可以创建一个方法,将FFmpeg的命令字符串化,然后通过这些类执行: ```java public void executeFFmpegCommand(String command) { ...

    exchange/powershell,Java调用powershell开通邮箱

    - 掌握Java编程,特别是如何使用Java的`ProcessBuilder`或`Runtime.exec()`来执行外部命令。 - 熟悉网络编程,了解如何使用Socket进行进程间的通信。 - 熟悉权限管理和安全实践,因为这涉及到在Java应用中执行...

    Android 通过process进程信息拿到当期正在运行的APP包名

    2. **执行shell命令**:使用`Runtime.getRuntime().exec()`或`ProcessBuilder`来执行`ps`命令,获取系统进程列表。 3. **解析输出**:`ps`命令的输出是一个文本流,需要解析出与应用相关的行。每行通常包括PID...

    java 调用 ffmpeg 进行视频转换以及截图.rar

    这通常涉及到使用Java的`Runtime.exec()`或`ProcessBuilder`类来执行系统命令。例如,你可以创建一个包含`ffmpeg`命令的字符串数组,然后通过`ProcessBuilder`实例来执行。在执行过程中,你需要正确指定`ffmpeg`的...

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

    在Java中调用shell脚本,可以使用Runtime类或ProcessBuilder类。例如,你可以创建一个shell脚本来执行DataX的同步任务,并将where条件作为参数传递。当条件包含特殊字符(如单引号 `'`、双引号 `"`、反斜杠 `\` 或者...

    Java Process Utils (Forker):用于更好地控制外部进程的 Java 库-开源

    Forker 是一个 Java 库,可让您更好地控制外部进程并提供 ProcessBuilder 的替代品。 该库基本上有 3 个主要组件: ForkerClient 替换 ProcessBuilder 只需构建一个进程,让 Forker 处理检查退出代码和重定向或捕获...

    java调用Windows应用程序

    在Java编程环境中,有时我们需要与操作系统进行交互,例如调用Windows上的特定应用程序,这通常是通过Java的`Runtime`类或`ProcessBuilder`类来实现的。下面将详细讲解这两个类如何帮助我们完成这一任务。 首先,`...

    java 中轻松实现 执行windows系统命令

    在Windows环境下,Java提供了一个叫做`java.lang.ProcessBuilder`的类,使得我们能够方便地实现这一功能。这个类允许开发者构建一个命令行进程,并且执行该进程,获取其输出结果。 首先,我们要了解`ProcessBuilder...

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

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

    解决Java调用BAT批处理不弹出cmd窗口的方法分析

    ProcessBuilder pb = new ProcessBuilder("cmd.exe", "/C", "start", "/b", "D:\\test.bat"); pb.redirectErrorStream(true); // 合并标准输出和错误输出 Process process = pb.start(); BufferedReader reader = ...

    解决java执行cmd命令调用ffmpeg报错Concat error - No such filter &#39;[0,0]&#39;问题

    2. **使用ProcessBuilder**:`ProcessBuilder`提供了更灵活的方式来构建和执行命令,可以更好地控制命令行参数的传递。例如,可以将每个参数作为一个独立的字符串添加到`ProcessBuilder`的命令列表中,避免了引号和...

    Java调用外部程序命令

    ProcessBuilder pb = new ProcessBuilder("command"); Process p = pb.start(); ``` #### 三、常见问题及解决方案 **问题1:** 进程阻塞问题 当使用Java调用外部程序时,可能会遇到程序无法正常退出的情况,通常...

    Java简单实现调用命令行并获取执行结果示例

    Java中提供了多种方式来调用命令行,包括使用Runtime.getRuntime().exec()方法、使用ProcessBuilder类、使用Apache Commons Exec库等。 在Java中,获取执行结果是指获取命令行执行的输出结果,用于分析执行结果、...

Global site tag (gtag.js) - Google Analytics