Чтение CSV-файла в Java

Для некоторого круга задач автоматизации обмена данными между различными приложениями необходимо работать с форматом CSV. Рассмотрим способы работы с этим форматом в Java.

Как обычно при реализации таких решений есть два пути. Написать все самому и использовать готовый пакет. К примеру, товарищ mycong предложил вариант в рукопашную сделать обработчик CSV, этот путь хорош, если необходимо соблюдать требования лицензионной чистоты или используемая платформа ограничена в объеме памяти для хранении программы.

Здесь мы видим, что просто читаются строки и по символу запятая отделяется одно значение от другого. Все бы ничего, но у меня в одном из проектов требовалось читать строковые данные в которых было что? Правильно. Запятая 😉 Сам формат CSV предусматривает подобные ситуации, но для реализации потребуется написать гораздо больше кода.
Для ентерпрайзненьких решений, как было в моем случае, можно и подключить библиотеку, реализующую чтение из формата CSV. Мне понравилась библиотека opencsv. Она хоть и не обновлялась с 2011 года, но и формат тоже пылью покрылся. Из библиотеки на понадобится один класс CSVReader. У нас есть несколько конструкторов класса, которые позволяют задать разделитель, поток, из которого читаем данные, символ кавычек, экранирования и даже количество строк, которые нужно пропустить перед читаемыми данными.
Для получения данных можно использовать метод readAll который прочитает все строки сразу в список строк или же использовать метод readNext для построчного чтения данных. Так жые есть итератор в классе. В общем читаем документацию при необходимости. Ну и пример использования напоследок:

выводим первый элемент данных в каждой строке CSV-файла.