Dev/Java

[java] CSV 파싱하기

창문닦이 2019. 12. 13. 22:27

CSV PARSER 이용해서 확장자가. csv인 파일을 파싱해서 처리해야 하는 일이 생겼다. 그런데 테스트 진행중에 CSV 파싱 오류가 계속해서 발생했다. 구글링 해본 결과 윈도우 OS에서 파일이 편집되었을 경우 인코딩 방식을 'ISO-8859-1'로 지정해야 한다는 것을 알게 되었다! 

 

자바 코드 

	/**
	 * <pre>
	 * getParsingCsvData
	 * </pre>
	 */
	private List<TestVO> getParsingCsvData(File file){
		
		List<TestVO> csvList = new ArrayList<>();
		
        // try with resources 
		try (BufferedReader reader = Files.newBufferedReader(file.toPath(), Charset.forName("ISO-8859-1"))) {				

			// 헤더를 제외한 레코드를 읽어서 파싱 
			Iterable<CSVRecord> records = CSVFormat.EXCEL.withFirstRecordAsHeader().withSkipHeaderRecord().parse(reader);
			
			for (CSVRecord record : records) {
				TestVO testVO = new TestVO();
				// 한 레코드마다 반복문		
                String columnOne = record.get(0);
                csvList.add(testVO);
			}
			
		} catch (FileNotFoundException e) {
			LOGGER.error("getParsingCsvData file not found: {}", e.getMessage());
		} catch (IOException e) {
			LOGGER.error("getParsingCsvData IO Exception: {}", e.getMessage());
		} 
		return csvList;
	}

 

 

 

 

** 참조한 사이트 **

To conclude, in scenarios like these, it is very important to know the origin of the edits.

https://blog.francium.tech/notes-read-csv-with-encoding-iso-8859-1-in-ruby-a71543610cd

https://www.baeldung.com/apache-commons-csv

 

 

'Dev > Java' 카테고리의 다른 글

[effective-java] 동시성  (0) 2020.01.15
[effective-java] 일반적인 프로그래밍 원칙  (0) 2020.01.14
[java] Logback 과 Maven  (0) 2019.10.04
[java] JVM, JRE, JDK, 자바 메모리 구조  (0) 2019.09.28
[java] HttpClient  (1) 2019.09.26