java로 파이썬이나 R 프로그램을 동작하는 경우가 있었다.
조금더 깔끔하게 무언가 callback형식으로 만들고 싶다는 생각이 들어서 여러방법을 조합하여 보았다.
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
public class Test {
private static Process process = null;
public static void main(String args[]){
exeOrder("c:/test.exe",new Item() {
@Override
public void todo(String res) {
// 콜백으로 할일~~
}
});
}
synchronized private static final void exeOrder(final String order, Item item) {
String res = null; // 실행결과
InputStream inputStream = null;
BufferedReader bufferedReader = null;
InputStreamReader insReader = null;
try {
process = Runtime.getRuntime().exec(order, null);
process.waitFor();
inputStream = process.getInputStream();
insReader = new InputStreamReader(inputStream);
bufferedReader = new BufferedReader(insReader, 1);
String line = null;
while ((line = bufferedReader.readLine()) != null) {
res = line;
}
} catch (Exception e) {
e.printStackTrace();
} finally {
process = null;
try {inputStream.close();} catch (IOException e) {}
try {bufferedReader.close();} catch (IOException e) {}
try {insReader.close();} catch (IOException e) {}
if (item != null) {
item.todo(res); // 콜백 실행, res값이 결과 값
}
}
}
}
//콜백용 인터페이스, 명령수행 이후의 행동을 정의 한다.
public interface Item {
public void todo(final String argument);
}
해당 프로세스중 item이라는 인터페이스를 만들어서 콜백형식으로 사용하였다.
프로세스가 끝날 때 해당 인터페이스 내용이 실행 되므로 편리하였던 것 같다.
반응형
'Java(자바)' 카테고리의 다른 글
자바 함수형 프로그래밍 2 (0) | 2019.04.25 |
---|---|
Java Exception 기록하기 (0) | 2019.04.25 |
파일 복사하기, Blob데이터를 파일로 만들기 (0) | 2019.04.25 |
Java로 File 만든 날짜 보기 (0) | 2019.04.25 |
jsch 사용법(ssh 연결) (0) | 2019.04.25 |
* 위 에니메이션은 Html의 캔버스(canvas)기반으로 동작하는 기능 입니다. Html 캔버스 튜토리얼 도 한번 살펴보세요~ :)
* 직접 만든 Html 캔버스 애니메이션 도 한번 살펴보세요~ :)
댓글