Team LiB
Previous Section Next Section

ProcessBuilderjava.lang

Java 5.0

This class launches operating system processes, producing Process objects. Specify the operating system command when you invoke the ProcessBuilder( ) constructor or with the command( ) method. Commands are specified with one or more strings, typically the filename of the executable to run followed by the command-line arguments for the executable. Specify these strings in a List, a String[ ], or, most conveniently, using a variable-length argument list of strings.

Before launching the command you have specified, you can configure the ProcessBuilder. Query the current working directory with the no-argument version of directory( ) and set it with the one-argument version of the method. Query the mapping of environment variables to values with the environment( ) method. You can alter the mappings in the returned Map to specify the environment you want the child process to run in. Pass TRue to redirectErrorStream( ) if you would like both the standard output and the standard error stream of the child process to be merged into a single stream that you can obtain with Process.getInputStream( ). If you do so, you do not have to arrange to read two separate input streams to get the output of the process.

Once you have specified a command and configured your ProcessBuilder as desired, call the start( ) method to launch the process. You then use methods of the returned Process to provide input to the process, read output from the process, or wait for the process to exit. start( ) may throw an IOException. This may occur, for example, if the executable filename you have specified does not exist. The command( ) and directory( ) methods do not perform error checking on the values you provide them; these checks are performed by the start( ) method, so it is also possible for start( ) to throw exceptions based on bad input to the configuration methods.

Note that a ProcessBuilder can be reused: once you have established a working directory and environment variables, you can change the command( ) and launch multiple processes with repeated calls to start( ).

public final class ProcessBuilder {
// Public Constructors
     public ProcessBuilder(java.util.List<String> command);  
     public ProcessBuilder(String... command);  
// Public Instance Methods
     public java.util.List<String> command( );  
     public ProcessBuilder command(String... command);  
     public ProcessBuilder command(java.util.List<String> command);  
     public java.io.File directory( );  
     public ProcessBuilder directory(java.io.File directory);  
     public java.util.Map<String,String> environment( );  
     public boolean redirectErrorStream( );  
     public ProcessBuilder redirectErrorStream(boolean redirectErrorStream);  
     public Process start( ) throws java.io.IOException;  
}

    Team LiB
    Previous Section Next Section