접근 제어자
상수
불변 | 타입 | 변수명 | 설명 |
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 사이에 존재할 수 있는 캐리지리턴과 인용구를 고려하는 로직이 핵심.