Лучший опыт

Как читать CSV-файлы на Java с помощью Open CSV.

Вступление CSV-файлы  —  один из распространенных способов хранения структурированных данных и обмена ими между серверами наряду с другим популярным форматом структурированных данных. Существует множество библиотек для чтения CSV-файлов, и одна из самых популярных  —  это Open CSV. В этой статье мы применим библиотеку OpenCSV для чтения CSV-файла на языке Java. Файл на входе В качестве входного файла воспользуемся набором данных из kaggle, с
Как читать CSV-файлы на Java с помощью Open CSV...

Вступление

CSV-файлы  —  один из распространенных способов хранения структурированных данных и обмена ими между серверами наряду с другим популярным форматом структурированных данных. Существует множество библиотек для чтения CSV-файлов, и одна из самых популярных  —  это Open CSV. В этой статье мы применим библиотеку OpenCSV для чтения CSV-файла на языке Java.

Файл на входе

В качестве входного файла воспользуемся набором данных из kaggle, содержащим ежедневный список “Топ-10” на Netflix.

OpenCSV  —  один из самых популярных парсеров CSV. Он предоставляет как базовые, так и расширенные функциональные возможности, которых более чем достаточно для чтения любого CSV-файла. Например, чтобы пропустить заголовок CSV-файла, нужно воспользоваться методом skip_line. Если нужно проверить строку, прежде чем ее обрабатывать, такую логику можно задать через интерфейс RowValidator и отфильтровать все строки, которые не проходят проверку.

Считывание CSV-файла

Считывание файла через CSVReader

Самый простой клиент мы можем создать, воспользовавшись классом CSVReader. Нам нужно передать объект FileReader:

После создания CSVReader мы можем либо считать весь файл в память, либо читать файлы построчно.

Считывание файла целиком в память

Такой подход не будет работать гладко и в конечном итоге приведет к возникновению исключений, если память ограничена.

Я попытался считать файл объемом 1 ГБ, но в итоге получил исключение:

Считывание файла построчно

Воспользовавшись методом readNext(), мы можем читать по одной строке за раз. Этот метод преобразует всю строку в объект String[].

Конфигурирование объекта CSVReader

Класс CSVReader является настраиваемым и предоставляет шаблон builder для своей настройки. Например, в приведенном ниже фрагменте кода мы настраиваем этот класс так, чтобы пропускать строку №1, поскольку это заголовок, а также добавляем валидатор строк для проверки номеров столбцов в каждой строке.

Проверка каждой записи с помощью валидатора строк

Считывание CSV-файла в Java Beans

Как правило, когда мы читаем CSV-файл, то преобразуем каждую единицу записи в Java-объект. Например, при считывании информации об учетной записи клиента, мы напишем маппер, который сопоставит прочитанные строковые значения с Java POJO по имени CustomerAccount. OpenCSV предоставляет аннотацию для привязки CSV-записи к POJO. Нам лишь нужно применить аннотации к полям внутри Java POJO.

Вывод

Считывание с позицией

Не все файлы поставляются с заголовком. Следовательно, для обработки файлов, в которых заголовок отсутствует, мы также можем воспользоваться привязкой позиции, как это показано ниже.

Вывод

В этой статье мы использовали библиотеку OpenCSV для чтения CSV-файла с помощью Java. Эта статья  —  ознакомительная, но если вы хотите узнать обо всех поддерживаемых функциях для сложных случаев использования, загляните сюда.