2015. 1. 12. 19:45
336x280(권장), 300x250(권장), 250x250, 200x200 크기의 광고 코드만 넣을 수 있습니다.

자바는 외부 프로그램을 실행 시 출력 내용을 바로 확인 할 수 없고 버퍼에 저장 후 출력하는 방식으로 확인 해야 한다



JDK 1.4이하에는 exec()메소드를 이용해 외부 프로그램을 실행 할 수 있고

JDK1.5 이상에서는 ProcessBuilder 객체를 이용하여 외부 프로그램을 실행 시킬 수 있다.


Process 객체 생성 후 실행 커맨드를 다음과 같이 인자값으로 넣어 주어야 한다.


Process process=nw ProcessBuilder("cmd","dir","/w").start();


위와 같이 표현 한다면 cmd커맨드 창을 실행 후 dir /w 명령어를 실행 한다는 의미이다.




혹은 다음과 같이 배열을 이용해 표현할 수도 있다.


String[] cmd=new String[]{"cmd","dir","/w"};


Process process=new ProcessBuilder(cmd).start;


이렇게 실행한 결과를 버퍼에 저장한 후 표준 출력을 화면에 표시하여야 하는데 다음과 같이 표현할 수 있다.




BufferedReader stdOut=new BufferedReader( new InputStreamReader(process.getInputStream()));


//표준 출력 상태를 출력 

whle(str=stdOut.readLine())!=null){

System.out.println(str);

}



InputStreamReader 객체를 통하여 위 process 객체에 출력된 스트림을 입력 받아 버퍼에 저장 후

while 문을 통하여 버퍼에 저장된 내용을 펴시하여 준다.



package ProcessBuilder;

import java.io.BufferedReader;
import java.io.InputStreamReader;

public class opening {
    public static void main(String[] args){
   
        String addr="http://www.daum.net";
        Process process =null;
        String[] cmd=new String[]{"rundll32","url.dll","FileProtocolHandler",addr};
        String str=null;
       
        try {
            //프로세스 빌더를 통하여 외부 프로그램을 실행
            process=new ProcessBuilder(cmd).start();
           
            //외부 프로그램의 표준 출력 상태를 버퍼에 저장
            BufferedReader stdOut=new BufferedReader(new InputStreamReader(process.getInputStream()));
           
            //표준 출력 상태를 출력afd
            while((str=stdOut.readLine())!=null){
                System.out.println(str);
            }
        } catch (Exception e) {
                e.printStackTrace();
        }
    }
}


이렇게 하면 rundll32를 통하여 웹 브라우저 실행 후 네이버로 이동된다.





'Java' 카테고리의 다른 글

encapsulating  (0) 2015.01.13
building a Stack structure  (0) 2015.01.13
UrlFrame, getting the page source and save as a txt file  (0) 2015.01.06
URL class, figuring the page source  (0) 2015.01.06
CopyFile getting a new name from the console  (0) 2015.01.03
Posted by af334