java ProcessBuilder类
  zw77MQd1kOsI 2023年11月02日 64 0


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()来间接创建其实例

【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月08日 0

暂无评论

推荐阅读
  NPQODODLqddb   2024年05月17日   63   0   0 .NET
  XkHDHG7Y62UM   2024年05月17日   42   0   0 .NET
  f18CFixvrKz8   2024年05月18日   77   0   0 .NET
  Tnh5bgG19sRf   2024年05月20日   104   0   0 Java
  rBgzkhl6abbw   2024年05月18日   71   0   0 .NET
  oXKBKZoQY2lx   2024年05月17日   54   0   0 C++
zw77MQd1kOsI