UNIVocity-Parser

tsv, csv, json 파일 등과 같이 형식이 정해진 파일에 대해서 읽거나 쓰거나 할 수 있는 자바 기반 파싱 프레임워크이다. 해당 참고 링크는 게시글 가장 하단에 적어두었다. 


기본적인 사용으로 실제 내 코드상 아래와 깉이 작성할 수 있었다. 코드는 일부만 작성


1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.List;
 
import com.univocity.parsers.tsv.TsvParser;
import com.univocity.parsers.tsv.TsvParserSettings;
import com.univocity.parsers.tsv.TsvWriter;
import com.univocity.parsers.tsv.TsvWriterSettings;
 
/***
 * ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
 * 
 * 
 * reference : https://www.univocity.com/pages/parsers-tutorial
 * 
 * 
 * ㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡㅡ
 * ***/
 
public class TsvParserImpl implements ParserMaker{
    
    private TsvParserSettings tsvParserSettings = null;    // TSV 읽기 파일 셋팅 객체
    private TsvParser tsvParser = null;                    // TSV 읽기 파서 객체
    
    private TsvWriterSettings tsvWriterSettings = null;    // TSV 쓰기 파일 셋팅 객체
    private TsvWriter tsvWriter = null;                    // TSV 쓰기 객체
    
    private BufferedReader bufferedReader = null;    // 파일 읽기 위함
    private FileReader fileReader = null;            // 
    
    private BufferedWriter bufferedWriter = null;    // 파일 쓰기 위함
    private FileWriter fileWriter = null;
    
    @Override
    public void settingReadParser() {
        tsvParserSettings = new TsvParserSettings();
        tsvParserSettings.getFormat().setLineSeparator("\r\n");        // 라인단위로 읽음
        tsvParser = new TsvParser(tsvParserSettings);
    }
    
    @Override
    public List<String[]> read() {
        // 데이터 읽기전에 파서 세팅
        settingReadParser();
        
        try {
            fileReader = new FileReader("src/File/doc.tsv");
        }
        catch (FileNotFoundException e) {
            System.out.println("TsvParserImpl : FileNotFoundException");
            e.printStackTrace();
        }
        
        bufferedReader = new BufferedReader(fileReader);
        List<String[]> allRowsData = tsvParser.parseAll(bufferedReader);
        
        // List : 전체 라인의 수
        // String[] : 각각의 칼럼 0 ~ 2 까지 존재한다.
        return allRowsData;
    }
 
    @Override
    public void settingWriteParser() {
        try {
            tsvWriterSettings = new TsvWriterSettings();
            tsvWriterSettings.getFormat().setLineSeparator("\r\n");
            
            // DB ㅡ> TSV (오름차순, 내림차순)
            fileWriter = new FileWriter("src/File/doc_fetch_DESC.tsv");
            bufferedWriter = new BufferedWriter(fileWriter);
            
            tsvWriter = new TsvWriter(bufferedWriter, tsvWriterSettings);
        } 
        catch (IOException e) {
            System.out.println("TsvParserImpl : IOException");
            e.printStackTrace();
        }
    }
    
    @Override
    public void write(List<String[]> allRowsData) {
        // 데이터 쓰기 전에 파서 세팅
        settingWriteParser();
        
        // 헤더 삽입
        tsvWriter.writeHeaders(EnumDocName.COLUMN_HEADER_DOC_SEQ.getName(), EnumDocName.COLUMN_HEADER_DOC_TITLE.getName(), EnumDocName.COLUMN_HEADER_DOC_REG_DT.getName());
        for(String[] rowData : allRowsData)
            tsvWriter.writeRow(rowData);
        tsvWriter.close();
    }
}
cs



'jvm lang' 카테고리의 다른 글

20180221 Enum Type (Enumeration) 01  (0) 2018.02.21
20180219 instanceof 연산자  (0) 2018.02.19
20180212 자바 공백 및 개행 제거  (0) 2018.02.12
20180209 Java Exception Handling  (0) 2018.02.09
20180212 How JVM Works (수정 2020-08-16)  (0) 2018.02.09
Posted by doubler
,