`

Java中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;
} 

 

附:

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

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

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

 

 

分享到:
评论

相关推荐

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

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

    ProcessBuilder非阻塞是调用

    ProcessBuilder 非阻塞是调用是指在 Java 中使用 ProcessBuilder 类来执行外部命令或程序时,如何实现非阻塞调用。 在 Java 中,使用 ProcessBuilder 类可以执行外部命令或程序,例如执行系统命令、运行可执行文件...

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

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

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

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

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

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

    java上传调用ffmpeg转码截图截取视频

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

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

    在Java编程中,经常需要执行一些外部的可执行文件或者脚本(如bat或shell脚本)。本文将详细介绍三种常用的方法:`Runtime.exec()`、`ProcessBuilder`以及`commons-exec`库。 #### 1. 使用`Runtime.exec()` `...

    Java中调用Python代码

    4. **使用进程通信**: 另一种方法是通过启动Python脚本作为独立的进程,然后使用Java的`ProcessBuilder`或`Runtime.exec()`来执行Python命令。这种方法较为通用,但需要处理进程间通信(如标准输入/输出流)。 5. *...

    Lodop与java结合使用打印功能

    Lodop通常需要购买授权才能在商业项目中使用,开发者需要正确地注册并管理这些许可证,以避免版权问题。 综上所述,Lodop与Java的结合使用为开发高效、灵活的打印功能提供了便利,尤其适合于条码打印需求。通过合理...

    java中调用本地exe文件

    如果需要向外部程序传递参数,可以在`exec`方法中使用字符串数组形式。 ```java String[] cmd = { "cmd.exe", "/c", "dir C:\\Windows" }; Process p = Runtime.getRuntime().exec(cmd); ``` 这里我们使用了`cmd....

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

    为了使代码更加健壮,可以考虑使用第三方库如`JAVE (Java Audio Video Encoder)`,它是一个Java封装了`ffmpeg`的库,提供了更友好的API,简化了在Java中使用`ffmpeg`的过程。不过,使用第三方库需要额外引入依赖,...

    java中调用控制台程序

    "java中调用控制台程序"这个主题就是关于如何在Java应用程序中调用控制台命令,比如Windows系统的CMD命令行或者在Linux环境中使用wget工具。在Java中,我们可以使用Runtime类或者ProcessBuilder类来实现这样的功能。...

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

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

    java用ffmpeg截取视频图片

    在 Java 中,我们可以借助于 FFmpeg 的命令行接口与 Java 的 ProcessBuilder 类来调用 FFmpeg 进行截图操作。 首先,我们需要在项目环境中配置 FFmpeg。在 Windows 和 Linux 平台上,你可以下载 FFmpeg 的预编译...

    使用JAVA调用应用程序.pdf

    在本文中,我们将探讨使用 Java 调用应用程序的方法和技术。Java 是一种广泛使用的编程语言,具有强大的功能和灵活性,广泛应用于web开发、安卓应用开发、桌面应用开发等领域。通过 Java,我们可以调用各种应用程序...

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

    在Java编程环境中,有时我们...不过,根据标题和描述,这个文件很可能包含了一个示例,演示了如何在Java中使用`ProcessBuilder`执行Windows系统命令。如果你能提供代码内容,我可以进一步解释和扩展相关的编程知识点。

    超详细!java访问windows共享目录并下载文件

    - 在Java中,可以通过`Runtime.getRuntime().exec()`或`ProcessBuilder`类来执行系统命令。在描述中提到的"调用cmd命令",就是指利用这些方法执行Windows的命令行指令,如`net use`命令来挂载网络共享目录。 2. **...

    java调用python脚本

    但在这里,我们将更常见地使用Java的`ProcessBuilder`或`Runtime.exec()`方法来执行外部进程,也就是我们的Python脚本。 1. **使用ProcessBuilder**: `ProcessBuilder`类允许我们创建和控制外部进程。以下是一个...

    surfer二次开发-java调用exe

    在Java中,我们可以使用`Runtime.getRuntime().exec()`方法来执行这个exe文件,从而间接调用VB中的功能。 `SurferUtil.java`是Java源代码文件,这是Java调用VB开发的Surfer功能的关键部分。在Java中,通常采用`...

    java使用phantomjs把echarts转图片 静态资源

    本文将详细讲解如何在Java环境中使用PhantomJS将ECharts图表转化为图片。 首先,我们需要理解ECharts。ECharts是百度推出的一个基于JavaScript的数据可视化库,它提供了丰富的图表类型,如折线图、柱状图、饼图等,...

Global site tag (gtag.js) - Google Analytics