Чтение файла CSV в массив

1. Обзор

Проще говоря, файл CSV (значения, разделенные запятыми) содержит упорядоченную информацию, разделенную запятыми.

В этом руководстве мы рассмотрим различные способы чтения файла CSV в массив.

2. BufferedReader в java.io

Сначала мы будем читать записи построчно, используя readLine () в BufferedReader . Затем мы разделим строку на токены на основе разделителя запятой.

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

Мы можем обращаться к более сложным файлам CSV с помощью OpenCSV.

OpenCSV - это сторонняя библиотека, которая предоставляет API для работы с CSV-файлами. Мы будем использовать метод 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.