`
ldzyz007
  • 浏览: 719896 次
  • 性别: Icon_minigender_1
  • 来自: 西安
社区版块
存档分类
最新评论

java ProcessBuilder类

    博客分类:
  • java
阅读更多
java5引入了ProcessBuilder类,该类的功能于Runtime.exec系列方法相同,都是启动一个进程。
主要区别是:ProcessBuilder是可以更好控制启动的进程,且可以重用;但是exec方法没有这种效果;
ProcessBuilder是从1.5加进来的,而exec系列方法是从1.0开始就有的,后续版本不断的重载这个方法,到了1.5已经有6个之多。
但是,官方的api没有任何文档说明这个两个区别,我想主要的是OO的思想,导致了这个新类的产生,功能上没什么变化
具体内容可以参见java5的api文档或者java in a nutshell


使用ProcessBuilder的例子

package net.java2000.util;
import java.io.BufferedReader;
import java.io.File;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.util.Arrays;

public class TestProcessBuilder {
 public static void main(String args[]) throws Exception {
  ProcessBuilder builder = new ProcessBuilder("cmd", "/c", "dir");
  builder.directory(new File("e:/"));
  Process process = builder.start();
  InputStream is = process.getInputStream();
  InputStreamReader isr = new InputStreamReader(is, "GBK");
  BufferedReader br = new BufferedReader(isr);
  String line;
  System.out.printf("Output of running %s is:", Arrays.toString(args));
  while ((line = br.readLine()) != null) {
   System.out.println(line);
  }
 }
}

  总结:

  ProcessBuilder为进程提供了更多的控制,例如,可以设置当前工作目录,还可以改变环境参数。而Process的功能相对来说简单的多。

  ProcessBuilder是一个final类,有两个带参数的构造方法,你可以通过构造方法来直接创建ProcessBuilder的对象。而 Process是一个抽象类,一般都通过Runtime.exec()和ProcessBuilder.start()来间接创建其实例

分享到:
评论

相关推荐

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

    Java如何基于ProcessBuilder类调用外部程序 Java中的ProcessBuilder类提供了一种方便的方式来调用外部程序。通过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写的60秒关机

    2. **使用Java ProcessBuilder类**:类似Runtime,ProcessBuilder允许更灵活地创建和管理子进程。它可以创建一个命令行进程来执行上述的系统关机命令。 3. **使用第三方库如JNA(Java Native Access)**:JNA允许...

    ProcessBuilder非阻塞是调用

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

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

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

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

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

    ffmpeg java 封装工具类,音视频处理.zip

    2. **执行命令**:使用Java的Runtime或ProcessBuilder类执行FFmpeg命令,处理音频和视频文件。 3. **错误处理**:捕获并处理FFmpeg执行过程中的错误输出,确保程序的稳定运行。 4. **日志记录**:记录执行命令及...

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

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

    java注册表修改

    在给定的部分内容中,我们看到了一个名为`PrefsDemo`的Java类,该类展示了如何使用JDK1.4中的`Preferences` API来修改注册表。下面是对这段代码的详细解析: 1. **导入必要的包**:首先,代码导入了`java.io.*`和`...

    java 执行cmd命令及mongodb脚本

    在Java中,我们可以使用Runtime类或ProcessBuilder类来执行操作系统级别的命令。这两种方法都能实现与操作系统的交互,但各自有其特点。 1. 使用Runtime类: ```java Runtime runtime = Runtime.getRuntime(); ...

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

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

    java中调用控制台程序

    在Java中,我们可以使用Runtime类或者ProcessBuilder类来实现这样的功能。 1. **Runtime类**: Runtime类是每个Java应用都有的一个实例,它提供了运行时与操作系统交互的能力。通过`getRuntime()`方法可以获得...

    通过JAVA执行命令行程序

    这通常是通过Java的Runtime类或ProcessBuilder类来实现的。本文将详细讲解如何通过Java执行命令行程序,以及在处理过程中可能遇到的线程阻塞问题。 首先,我们来看标题提到的"通过JAVA执行命令行程序"。Java提供了...

    在Linux系统下用java执行系统命令实例讲解

    二、ProcessBuilder类 `ProcessBuilder`类提供了更灵活的方式来执行命令,可以设置环境变量,工作目录等。创建`ProcessBuilder`实例后,通过`command()`方法添加命令和参数,然后调用`start()`方法执行。 ```java ...

    Java 定时,倒计时关机程序(含源代码)

    在`PowerOff.java`中,开发者可能使用了Runtime类或ProcessBuilder类来执行外部命令。例如,使用Runtime.exec方法: ```java Runtime.getRuntime().exec("poweroff.exe"); ``` 或者使用ProcessBuilder类: ```...

    java utils 工具类

    在Java中,我们可以使用`java.lang.ProcessBuilder`或`Runtime.getRuntime().exec()`来执行系统命令并获取其结果。`ProcessUtil`可能封装了这些功能,提供了更安全、更方便的接口来管理和控制进程。 ### 3. 使用`...

    JAVA Process 使用

    创建和管理`Process`的主要类是`java.lang.ProcessBuilder`。它提供了构造进程命令行、设置工作目录、环境变量等方法,并最终用于启动新进程。 ```java ProcessBuilder pb = new ProcessBuilder("command", "arg1",...

    Java执行dos命令

    这种需求通常是通过Java的Runtime类或者ProcessBuilder类来实现的。下面将详细介绍如何使用Java执行DOS命令以及相关知识点。 一、Runtime类 Runtime类是每个Java应用程序都有的一个实例,它提供了执行系统命令的...

    java调用DOS命令

    Java提供了Runtime类和ProcessBuilder类来实现这一目标。 1. **Runtime类**: `Runtime.getRuntime().exec(command)` 是最常用的调用DOS命令的方法。`command` 是一个字符串,包含了要执行的命令和参数。例如,...

Global site tag (gtag.js) - Google Analytics