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.Сканер для просмотра содержимого файла и извлечения строк последовательно, одна за другой:
List> records = new ArrayList<>(); try (Scanner scanner = new Scanner(new File("book.csv"));) { while (scanner.hasNextLine()) { records.add(getRecordFromLine(scanner.nextLine())); } }
Затем мы проанализируем строки и сохраним их в массив:
private ListgetRecordFromLine(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-файлам с помощью Opencv.
OpenCSV-это сторонняя библиотека, которая предоставляет API для работы с CSV-файлами. Мы будем использовать readNext() метод в CSV Reader для чтения записей в файле:
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 .