CSV 파일을 배열로 읽기

1. 개요

간단히 말해서 CSV (Comma Separated Values) 파일에는 쉼표 구분 기호로 구분 된 구성 정보가 포함되어 있습니다.

이 튜토리얼에서는 CSV 파일을 배열로 읽는 다양한 방법을 살펴 봅니다.

2. 의 BufferedReaderjava.io

먼저 BufferedReader 에서 readLine () 을 사용하여 한 줄씩 레코드를 읽습니다 . 그런 다음 쉼표 구분 기호를 기준으로 줄을 토큰으로 분할합니다.

List
    
      records = new ArrayList(); try (BufferedReader br = new BufferedReader(new FileReader("book.csv"))) { String line; while ((line = br.readLine()) != null) { String[] values = line.split(COMMA_DELIMITER); records.add(Arrays.asList(values)); } }
    

이 접근 방식을 사용하면보다 정교한 CSV (예 : 인용 또는 값으로 쉼표 포함)가 의도 한대로 구문 분석되지 않습니다.

3. 스캐너있는 java.util

다음으로 java.util.Scanner 를 사용 하여 파일 내용을 실행하고 행을 하나씩 차례로 검색합니다.

List
    
      records = new ArrayList(); try (Scanner scanner = new Scanner(new File("book.csv"));) { while (scanner.hasNextLine()) { records.add(getRecordFromLine(scanner.nextLine())); } }
    

그런 다음 라인을 구문 분석하여 배열에 저장합니다.

private List getRecordFromLine(String line) { List values = new ArrayList(); try (Scanner rowScanner = new Scanner(line)) { rowScanner.useDelimiter(COMMA_DELIMITER); while (rowScanner.hasNext()) { values.add(rowScanner.next()); } } return values; }

이전과 마찬가지로이 접근 방식을 사용하면보다 정교한 CSV가 의도 한대로 구문 분석되지 않습니다.

4. OpenCSV

OpenCSV로 더 복잡한 CSV 파일을 처리 할 수 ​​있습니다.

OpenCSV는 CSV 파일 작업을위한 API를 제공하는 타사 라이브러리입니다. 우리는 사용합니다 readNext () 에서 방법을 CSVReader 파일의 레코드를 읽을 수 :

List
    
      records = new ArrayList
     
      (); try (CSVReader csvReader = new CSVReader(new FileReader("book.csv"));) { String[] values = null; while ((values = csvReader.readNext()) != null) { records.add(Arrays.asList(values)); } }
     
    

OpenCSV에 대해 자세히 알아 보려면 OpenCSV 자습서를 확인하십시오.

5. 결론

이 빠른 자습서에서는 CSV 파일을 배열로 읽는 다양한 방법을 탐색했습니다.

항상 그렇듯이 예제의 전체 소스 코드는 GitHub에서 사용할 수 있습니다.