본문 바로가기
백엔드기술/개발언어

임시 참조

by RevFactory 2010. 5. 25.

package kr.org.kisti.morph.test;

import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.util.ArrayList;
import java.util.List;
import java.util.StringTokenizer;

/**
 *
 * @author admin
 */
public class Comparer {
    private String inputFileName1;
    private String inputFileName2;
    private String outputFileName;

    private String sourceString;
    private static final String NEWLINE = "\r\n";

    public Comparer(String iFileName1, String iFileName2, String rFileName) {
        inputFileName1 = iFileName1;
        inputFileName2 = iFileName2;
        outputFileName = rFileName;
    }

    // 키워드 추출 시작
    public void Do() {
        BufferedReader dResult = readResult(inputFileName1);
        BufferedReader tResult = readResult(inputFileName2);
       
        BufferedWriter writer = writeResult(outputFileName);

        List<String> dListResult = null;
        List<String> tListResult = null;

        while(true) {
            dListResult = processD(dResult);
            tListResult = processT(tResult);

            if(dListResult == null || tListResult == null) {
               break;
            }

            boolean isFirst = true;
            StringBuffer sb = new StringBuffer();

            sb.append("Resource : " + sourceString + NEWLINE);
            sb.append("D_Result : ");
            for(String s : dListResult) {
                if(isFirst) {
                    isFirst = false;
                } else {
                    sb.append(", ");
                }
                sb.append(s);
            }
            sb.append(NEWLINE);

            isFirst = true;
            sb.append("T_Result : ");
            for(String s : tListResult) {
                if(isFirst) {
                    isFirst = false;
                } else {
                    sb.append(", ");
                }
                sb.append(s);
            }
            sb.append(NEWLINE + NEWLINE);
            try {
                writer.write(sb.toString());
            } catch(IOException e) {

            }
            sb = null;
        }

        try {
            dResult.close();
            tResult.close();
            writer.close();
        } catch(IOException e) { }
    }

    // 다이퀘스트 결과 분석 후 키워드 리스트 반환
    public List<String> processD(BufferedReader dResult) {
        List<String> keyword = new ArrayList<String>();
        boolean isContinue = true;
        try {
            sourceString = dResult.readLine();
            while(isContinue) {
                String s = dResult.readLine();
                if(s == null) {
                    //System.out.println("end file");
                    return null;
                }
                if(!s.startsWith("=")) {
                    keyword.add(s.trim());
                } else {
                    break;
                }
            }
        } catch(IOException e) { }
        return keyword;
    }

    // 탑쿼드란드 결과 분석 후 키워드 리스트 반환
    public List<String> processT(BufferedReader tResult) {       
        List<String> keyword = new ArrayList<String>();

        try {
            sourceString = tResult.readLine();
            boolean isContinue = true;
            while(isContinue) {
                String s = tResult.readLine();
                if(s == null) {
                    //System.out.println("end file");
                    return null;
                }
                if(!s.startsWith("=")) {
                    if(s.startsWith("[")) {
                        s = s.substring(1, s.length()-1);                       
                        StringTokenizer stok = new StringTokenizer(s, ",");
                        while(stok.hasMoreTokens()) {
                            keyword.add(stok.nextToken().trim());
                        }
                    }
                } else {
                    break;
                }
            }
        } catch(IOException e) { }
        return keyword;
    }

    // 한글 인코딩 고려하여 파일에서 읽어들이기 위한 인스턴스 생성
    public BufferedReader readResult(String fileName) {
        BufferedReader in = null;
        try {
            in = new BufferedReader(
                    new InputStreamReader(
                        new FileInputStream(fileName), "MS949")
                        //new FileInputStream(fileName), "UTF-8")
                    );

        } catch (IOException e) {
            System.out.println("file error!");
        }
        return in;
    }

    // 분석결과 파일에 쓰기위한 인스턴스 생성
    public BufferedWriter writeResult(String outFileName) {
        BufferedWriter out = null;
        try {
            out = new BufferedWriter(
                new OutputStreamWriter(
                        new FileOutputStream(outFileName), "UTF-8")
                );
        } catch(IOException e) {
            System.out.println("Can't write file..");
        }
        return out;
    }
}

'백엔드기술 > 개발언어' 카테고리의 다른 글

임시 참조 - 루씬 한글형태소분석기 사용하기(main)  (0) 2010.05.25
뮤텍스 (Mutex)  (0) 2009.12.09
프로세스와 스레드  (0) 2009.12.09