안녕하세요?

오래간만에 포스팅을 하게 되었습니다. :)
그 동안 개발자로서의 삶에 대해서 많은 고찰과 성찰과 반성... 등을 하였습니다.

모쪼록 오늘은 유용한 팁을 몇자 적어볼까 합니다.



프로젝트를 하다보면, 간혹 윈도우에 있는 파일을 실행시킬 때가 있습니다.
exe 파일이라면, 고민없이 exec() 함수를 이용해서 실행하면 되겠지요.

만약 pdf, xls, txt, doc, hwp, ppt, mp3, wmv, avi .. 와 같은 파일들이라면 어떻게 해야 할까요?
어떻게 이런 파일들에 대한 연결프로그램을 찾을 수 있을까요?

exec() 함수를 통해서 어떻게 실행해야 할까요?


일반적으로 가장 많이 쓰는(?) 방법은 레지스트리를 통해서 연결프로그램을 찾는 것입니다.
"컴퓨터\HEKY_CLASSES_ROOT" 를 통해서 알 수 있지요.

하지만 이 방법은 너무나 복잡합니다.
레지스트리를 열고, 그 안에 핸들러를 찾고. 해당 프로그램에 파라미터로 값을 넣어주어야 합니다.


그런데!
간단한 방법이 있습니다.
바로 rundll32 를 사용하는 방법입니다 :)

자바로 작성하면 아래와 같습니다.


String filePath = "C:\\mydoc.pdf";
Process process = Runtime.getRuntime().exec("rundll32 url.dll,FileProtocolHandler " + filePath);
process.getErrorStream().close();
process.getInputStream().close();
process.getOutputStream().close();





윈도우가 내부적으로 알아서 연결프로그램을 찾고, 해당 파일을 실행시켜 줍니다.

레지스트리를 통해서 연결프로그램을 찾는 과정이 없으니, 코드도 간결하고 가독성도 좋아지고~
누이좋고 매부좋고.


그럼.. 다음에 또 돌아올게요~ :)