[JAVA] ProcessBuilder 사용방법
자바에서 ProcessBuilder 로 특정 프로그램을 강제 실행할 수 있다.
아래 코드는 [시작] – [실행] 창에 “iexplore http://en.wikipedia.org/” 라고 입력했을 때의 결과와 같다.
|
// 인터넷 익스플로러로 영문 위키피디아 사이트 접속하기 try { ArrayList<String> list = new ArrayList(); list.add(“C:\\Program Files\\Internet Explorer\\iexplore.exe”); list.add(“http://en.wikipedia.org/“); ProcessBuilder builder = new ProcessBuilder(list); builder.start(); } catch (Exception e) { e.printStackTrace(); }
|
ProcessBuilder 는 명령의 결과값도 리턴받을 수 있다.
예를 들어 아래 예제는 cmd 에서 dir 명령어를 한 결과를 가져온다.
|
ProcessBuilder processBuilder = null; Process process = null; InputStreamReader inputReader = null; BufferedReader bufferedReader = null; ArrayList<String> valueList = null; try { processBuilder = new ProcessBuilder(); valueList = new ArrayList<String>(); valueList.add(“cmd”); valueList.add(“/C”); valueList.add(“dir”); // 특정 위치에서 실행 (dir 명령어를 특정 폴더에서 수행하고 싶을 경우) // processBuilder.directory(new File(“c:\\test”)); processBuilder.redirectErrorStream(true); processBuilder.command(valueList); process = processBuilder.start(); inputReader = new InputStreamReader(process.getInputStream(), “MS949”); bufferedReader = new BufferedReader(inputReader); String line = “”; while ((line = bufferedReader.readLine()) != null) { if (line.trim().length() == 0) { continue; } System.out.println(line); } int resultValue = process.exitValue(); System.out.println(“resultValue : “ + resultValue); } catch (Exception e) { e.printStackTrace(); } finally { try { if (inputReader != null) { inputReader.close(); } } catch (Exception e) { } finally { inputReader = null; } try { if (bufferedReader != null) { bufferedReader.close(); } } catch (Exception e) { } finally { bufferedReader = null; } try { if (process != null) { process.destroy(); } } catch (Exception e) { } finally { process = null; } }
|
여기서 processBuilder.directory() 부분은 검색해도 잘 안나오는 내용인데, 특정 폴더 위치에서 프로세스 빌더를 실행하고 싶을 때 사용하면 된다(프로세스 빌더의 작업 디렉토리 지정).