Search

openCSV 분석

접근 제어자 상수 불변
타입
변수명
설명
private
BufferedReader
br
파일 읽을 때 사용
private
boolean
hasNext
default
CSVParser
parser
csv를 파싱할 때 사용 *따로 제작하여 사용
default
boolean
skipLines
해당 라인이 skip될 대상인지 여부 판단
priavet static final
int
DEFAULT_SKIP_LINES
기본 skip 여부
생성자 public CSVReader( [options] ) - 대부분 오버로드한 형태로 옵션을 받음. 설명
1.
char separator - 항목구분자 벗어날때 사용할 기호
2.
char quotechar - 해당 row에서 사용 중인 인용구를 벗어날때 사용
3.
char escape - 따옴표 또는 구분자를 벗어날 때 사용할 문자
4.
int line - skip할 라인 (특이점은 해당 line 이후부터 읽어 들임)
5.
boolean strictQuotes -따옴표 문자가 무시되는지 옵션
6.
boolean ignoreLeadingWhiteSpace - 공백 무시 옵션
메서드 public List<String[]> readALL() 설명 - Reader에서 읽은 데이터를 List 형태로 제작 - 별 크게 어려운 단계는 없고 지속적으로 row를 읽어 들임. 연관 public String[] readNext()
메서드 public String[] readNext() 설명 - CSVParser로 row자체를 넘김 - CSVPaeser에서 파싱된 row를 옮겨 담아 리턴 로직 설명 - CSVParser 측에서 파싱된 row의 일부를 가져와서 String[]에 추가함, 추가시에 계속 필드 단위로 추가함. 특이사항 - 만약 캐리지리턴이 존재할 경우 bufferedReader에서 그까지만 읽어 들임. 결론적으로 캐리지리턴을 포함하는 문자열이면 중간에 짤리게 된다. 그로 인하여 로직이 복잡해짐. 연관 public String getNextLine() CSVParser parser.parseLineMulti(nextLine)
결론
OpenCSV의 경우 BufferedReader를 이용하여 캐리지리턴까지 계속 읽어 들임. 이 때 field와 field 사이에 존재할 수 있는 캐리지리턴과 인용구를 고려하는 로직이 핵심.