通过Java执行系统命令,与cmd中或者终端上一样执行shell命令,最典型的用法就是使用Runtime.getRuntime().exec(command)或者new ProcessBuilder(cmdArray).start()。

ProcessBuilder类是J2SE 1.5在java.lang中新添加的一个新类,此类用于创建操作系统进程,它提供一种启动和管理进程(也就是应用程序)的方法。在J2SE 1.5之前,都是由Process类处理实现进程的控制管理。每个ProcessBuilder实例管理一个进程属性集合。start()方法使用这些属性创建一个新的流程实例。可以从同一个实例多次调用start()方法,以创建具有相同或相关属性的新子进程。

    ProcessBuilder的构造方法接收一个命令参数的数组形式,其中,第一个元素代表要执行的系统命令,后面的元素代表要传给该命令的参数。

API:

构造方法摘要 
ProcessBuilder(List<String> command) 
利用指定的操作系统程序和参数构造一个进程生成器。 
ProcessBuilder(String… command) 
利用指定的操作系统程序和参数构造一个进程生成器。

方法摘要 
command() 

返回此进程生成器的操作系统程序和参数。          设置此过程构建器的操作系统程序和参数。此方法不会复制命令列表。该列表的后续更新将反映在流程构建器的状态中。不检查命令是否对应于有效的操作系统命令。


command(List<String> command) 

设置此进程生成器的操作系统程序和参数。 

command(String… command) 

设置此进程生成器的操作系统程序和参数。 

directory() 

返回此进程生成器的工作目录。 

directory(File directory) 

设置此进程生成器的工作目录。 

environment() 

返回此进程生成器环境的字符串映射视图。 environment方法获得运行进程的环境变量,得到一个Map,可以修改环境变量 

redirectErrorStream() 


通知进程生成器是否合并标准错误和标准输出。     如果该属性为真,则由该对象的start()方法启动的子进程生成的任何错误输出都将与标准输出合并,以便两者都可以使用Process.getInputStream()方法读取。这使得将错误消息与相应的输出关联起来更容易,而从 Process.getErrorStream() 返回的流读取将直接到达文件尾。初始值为false。


redirectErrorStream(boolean redirectErrorStream) 


设置此进程生成器的 redirectErrorStream 属性。 

start()                   使用此进程生成器的属性启动一个新进程。