Найти в Дзене
Nuances of programming

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

Источник: Nuances of Programming Курс SkillFactory Java-разработчик. Освойте backend-разработку и программирование на Java, Spring и основы DevOps. Соберите портфолио проектов и начните откликаться на вакансии уже после 7 месяцев обучения. Вступление CSV-файлы  —  один из распространенных способов хранения структурированных данных и обмена ими между серверами наряду с другим популярным форматом структурированных данных. Существует множество библиотек для чтения CSV-файлов, и одна из самых популярных  —  это Open CSV. В этой статье мы применим библиотеку OpenCSV для чтения CSV-файла на языке Java. Файл на входе В качестве входного файла воспользуемся набором данных из kaggle, содержащим ежедневный список “Топ-10” на Netflix. OpenCSV  —  один из самых популярных парсеров CSV. Он предоставляет как базовые, так и расширенные функциональные возможности, которых более чем достаточно для чтения любого CSV-файла. Например, чтобы пропустить заголовок CSV-файла, нужно воспользоваться методом ski
Оглавление

Источник: Nuances of Programming

Курс SkillFactory Java-разработчик. Освойте backend-разработку и программирование на Java, Spring и основы DevOps. Соберите портфолио проектов и начните откликаться на вакансии уже после 7 месяцев обучения.

Вступление

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

Файл на входе

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

-2
-3

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

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

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

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

-4

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

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

-5

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

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

-6

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

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

-7

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

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

-8

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

-9

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

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

-10

Вывод

-11

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

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

-12

Вывод

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

Читайте также:

Читайте нас в Telegram, VK

Перевод статьи Suraj Mishra: How to Read CSV File using Open CSV In Java