maroph icon

Using ProcessBuilder under Windows

maroph | PRO | 08/25/12 03:18:19 PM UTC | 0 ⭐ | 351 👁️ | Never ⏰ | []
Java 5 |

0 B

|

None

|

0 👍

/

0 👎

package sample;
 
import java.io.BufferedReader;
import java.io.File;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.Map;
 
 
/**
 * Simple usage example for class java.lang.ProcessBuilder under Windows (XP, Vista, ...) 
 */
public class ProcessBuilderTest {
    /**
     * @param args no arguments needed
     */
    public static void main(String[] args) {
        ProcessBuilder pb = new ProcessBuilder();
        pb.redirectErrorStream(true);
        pb.directory(new File("C:/"));
        pb.command("cmd", "/c", "dir");
        //Map<String, String> env = pb.environment();
        //env.put("PB_SAMPLE_VAR", "Hello World!");
        //pb.command("cmd", "/c", "echo", "%PB_SAMPLE_VAR%");
        
        Process p;
        try {
            p = pb.start();
        }
        catch (Exception e) {
            e.printStackTrace();
            System.exit(1);
            return;
        }
        
        System.out.println("stdout/stderr of command: " + pb.command());
        System.out.println("-------------------------");
        InputStreamReader isr = null;
        BufferedReader    br  = null;
        try {
            isr = new InputStreamReader(p.getInputStream());
            br  = new BufferedReader(isr);
        
            String line;
            for (;;) {
                try {
                    line = br.readLine();
                    if (line == null) {
                        break;
                    }
                    System.out.println(line);
                }
                catch (IOException e) {
                    e.printStackTrace();
                    break;
                }
            }
        }
        finally {
            if (br != null) {
                try { br.close(); } catch (Exception ex) { /* */ }
            }
        }
        
        int exitcode = -1;
        try {
            exitcode = p.waitFor();
        } catch (InterruptedException e) {
            e.printStackTrace();
            exitcode = -42;
        }
        System.out.println("-------");
        System.out.println("exitcode: " + exitcode);
    }
}

Comments