Search results for 'runtime'

Runtime 클래스를 이용한 외부 프로그램 호출

java.lang 패키지의 Runtime 클래스는 자바에서 외부 프로세스를 생성하는 방법을 제공한다.
예를 들어 자바를 이용하여 MS 윈도우에서 MS 엑셀을 실행하는것등에 이 Runtime클래스를 이용할 수 있다.

예를 들어 C:\Program Files\Microsoft Office\Office\excel.exe 위치에 있는 excel.exe를 실행
하는 코드는 아래와 같다.

try {
   Runtime run = Runtime.getRuntime ();
   run.exec ( "C:\\Program Files\\Microsoft Office\\Office\\excel.exe" );
} catch ( IOException ie )
{  
   System.err.println ( ie );
}

어떤가, 무척 간단하지 않는가?
그럼, 한걸음 더 나아가 보자.
윈도우는 파일확장자별로 대표 프로그램을 등록하여 파일을 더블클릭하는것만으로 해당 프로그램을 실행 할 수가
있는데 이렇게 특정 파일을 선택하여 그와 연결된 프로그램을 실행하는 코드도 자바로 가능 할까?
물론, 가능하다. 여기에는 윈도우즈 명령어를 조금 알아야 하는 부분이 있지만 그 부분만 알고 있다면 나머지는
위와 동일하게 Runtime 객체로 그 명령어를 실행 하기만 하면된다.
아래 코드를 보자.
package javacodesnipet;

import java.io.File; import java.io.IOException;

/**  * Runtime클래스를 이용하여 해당 파일과 연결된 프로그램을 실행한다.  * @author 신윤섭  */ public class RuntimeExample {  public static void main(String[] args){   try {      File file = new File("d:\\sample.pdf");          //MS Windows Only      Process p= Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " +      file.getAbsolutePath());      // or      //Process p= Runtime.getRuntime().exec("rundll32 SHELL32.DLL,ShellExec_RunDLL " +      // file.getAbsolutePath());          //Apple Mac Only      //Process p= Runtime.getRuntime().exec("open " + file.getAbsolutePath());          p.waitFor();      System.out.println("Process Done");       } catch (InterruptedException ex) {      ex.printStackTrace();   } catch (IOException ex) {      ex.printStackTrace();   }  } }


위 코드는 윈도우 탐색기에서 d:\sample.pdf를 더블클릭하여 아크로뱃리더를 실행하고 해당 pdf문서를
여는것과 동일한 효과를 얻을 수 있다.  윈도우의 rundll32 명령으로 해당 파일과 연결된 프로그램을 구동
할 수 있는데 이를 Runtime객체를 이용하여 수행하는 코드이다.

rundll32 more..

2008/08/02 00:54 2008/08/02 00:54
Trackback Address:이 글에는 트랙백을 보낼 수 없습니다