자바 예제: 외부 프로그램/외부 명령 실행
Foo.java
public class Foo {
public static void main(String args[]) {
String s;
try {
/* 자바 1.4 이하에서는 이렇게
Runtime oRuntime = Runtime.getRuntime();
Process oProcess = oRuntime.exec("cmd /c dir /?");
*/
// 자바 1.5 이상에서는 이렇게 1줄로
Process oProcess = new ProcessBuilder("cmd", "/c", "dir", "/?").start();
// 외부 프로그램 출력 읽기
BufferedReader stdOut = new BufferedReader(new InputStreamReader(oProcess.getInputStream()));
BufferedReader stdError = new BufferedReader(new InputStreamReader(oProcess.getErrorStream()));
// "표준 출력"과 "표준 에러 출력"을 출력
while ((s = stdOut.readLine()) != null) System.out.println(s);
while ((s = stdError.readLine()) != null) System.err.println(s);
// 외부 프로그램 반환값 출력 (이 부분은 필수가 아님)
System.out.println("Exit Code: " + oProcess.exitValue());
System.exit(oProcess.exitValue()); // 외부 프로그램의 반환값을, 이 자바 프로그램 자체의 반환값으로 삼기
} catch (IOException e) { // 에러 처리
System.err.println("에러! 외부 명령 실행에 실패했습니다.\n" + e.getMessage());
System.exit(-1);
}
}
}
Process oProcess = new ProcessBuilder("cmd", "/c", "dir").start();
윈도우 도스창에서 dir 명령 실행. dir 은 cmd.exe 속에 내장된 내부 명령어이기에 이렇게 합니다. 내부 명령어를 그냥 실행시키면 안됩니다.
Process oProcess = new ProcessBuilder("notepad.exe").start();
윈도우 메모장 실행:
출처 : Tong - Developer님의 ▒ Java통
public void R_exec() {
try {
String R_file = "C:\\source\\pvrc_java\\file\\test.R";
String log_file = "C:\\source\\pvrc_java\\file\\test.log";
Process p = Runtime.getRuntime().exec(String.format("R.exe CMD BATCH %s %s", R_file, log_file));
InputStream is = p.getInputStream();
BufferedReader br = new BufferedReader( new InputStreamReader( is ) ) ;
while( true ) {
String str = br.readLine() ;
if( str == null || str.equals( "" ) ) break ;
System.out.println( str ) ;
System.out.println("testtest");
}
System.out.println(p);
try {
p.waitFor();
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
p.destroy();
}
} catch (IOException e) {
System.out.println(e);
}
}
'Technology > Programming' 카테고리의 다른 글
HTML / HTML5 (0) | 2010.01.04 |
---|---|
Javascript / Javascript document (0) | 2009.12.11 |
JAVA / 파일처리 (0) | 2009.12.01 |
Python / 날짜 계산하기 (0) | 2009.11.07 |
Javascript / 날짜 정규표현식 (0) | 2009.10.30 |