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



Книга Как читать 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. Эта статья  —  ознакомительная, но если вы хотите узнать обо всех поддерживаемых функциях для сложных случаев использования, загляните сюда.



281   0  

Comments

    Ничего не найдено.