Чтение и запись CSV файла с помощью SuperCSV в Java

Чтение и запись CSV файла с помощью SuperCSV в Java

В этой статье мы рассмотрим простой способ обработки CSV файлов c помощью библиотеки Super CSV. На простых примерах научимся парсить (считывать) данные и создавать новые CSV файлы.

Недавно мы рассматривали простой способ обработки CSV в Java без использования сторонней библиотеки — Как читать CSV файл в Java: задавали разделитесь и считывали информацию с помощью класса Scanner. Но как быть с созданием новых CSV файлов, элементарной поддержкой кодировки, обработки спецсимволов? Для этого есть библиотека SuperCSV —  быстрый, удобный и бесплатный инструмент для обработки CSV в Java.

Краткий обзор библиотеки Super CSV

  • SuperCSV берет на себя работу с кодировкой, правильной обработкой запятых, кавычек, пробелов и escape-последовательностей согласно спецификации CSV.
  • SuperCSV позволяет разработчику использовать свой собственный разделитель или просто выбрать одну из предопределенных конфигураций, включая запятые, табуляцию, точку с запятой и другие.
  • SuperCSV работает с потоками, то есть дает максимальный контроль ввода/вывода при работе с CSV.
  • SuperCSV позволяет быстро и удобно парсить дату, применять форматирование, а также использовать регулярные выражения для преобразования значений.

В примере ниже мы парсим CSV-файл и преобразовываем считанную информацию в список объектов Java. Также мы рассмотрим быстрый способ создания нового CSV файла в Java.

Читаем CSV файл с помощью библиотеки SuperCSV

Создадим файл test.csv с таким наполнением:

Теперь создадим модель данных:

Теперь создадим maven проект и добавим в файле pom.xml зависимость Super CSV:

Если вы хотите добавить jar файл в проект, то скачайте последнюю версию библиотеки по этой ссылке и воспользуйтесь инструкцией по добавлению jar файла в проект Intellij IDEA.

Теперь напишем парсер, с помощью которого будем считывать информацию с csv файла:

Обратите внимание, что мы сами задаем как именно нужно обрабатывать csv: мы явно указали обработчики для каждого поля и указали правила парсинга информации. Например, если поле role будет null, то парсер примет это как должное и дальше продолжит обработку файла просто записав null.

Запустим приведенную выше программу и посмотрим результаты парсинга в консоле:

Пишем в CSV файл с помощью библиотеки SuperCSV

Создать новый CSV файл с помощью Super CSV также просто, как и парсить данные, только теперь мы будем работать с классом CsvBeanWriter:

Обратите внимание, что для идентификации ячеек я добавил хедер-строку — она не обязательна, поэтому можете смело, если она вам не нужна.

Теперь запустим программу и посмотрим в консоль:

Важно отметить, что при создании обработчиков мы позволили nullable поля с помощью Optional(), поэтому Super CSV просто добавил пустоту.

С помощью UniqueHashCode() мы указываем на уникальность каждого идентификатора, поэтому при нахождении дубликатов id будет выброшен Exception SuperCsvConstraintViolationException().

Больше информации и примеров использования найдете на официальной странице SuperCSV.

Подписывайтесь на новые статьи по Java разработке!

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *