通过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() 使用此进程生成器的属性启动一个新进程。