Рубрики
Без рубрики

Как читать и анализировать CSV-файл на Java

Рассказывает о синтаксическом анализе CSV-файлов, RFC 4180, OpenCSV и примерах реализации одного класса для чтения и анализа CSV-файла.

В этой статье показано, как читать и анализировать значения, разделенные запятыми (CSV) файл.

Темы:

  1. CSV-файл и RFC 4180
  2. OpenCSV – Чтение и анализ CSV-файла
  3. OpenCSV – Преобразование CSV–файла в объект
  4. Проблемы с анализом CSV-файла – Встроенные запятые, двойные кавычки и разрывы строк
  5. Один класс для чтения и анализа CSV-файла
  6. Строка#разделить для анализа CSV-файла

1. Файл CSV и RFC 4180.

Файл значений, разделенных запятыми (CSV), представляет собой стандартный текстовый файл, в котором для разделения значений используется запятая . Каждая строка файла состоит из одного или нескольких полей, разделенных запятыми. Каждое поле может быть заключено или не заключено в двойные кавычки.

RFC 4180 определяет формат или определения файла CSV или текстового/csv файла.

2. OpenCSV – Чтение и анализ CSV-файла.

2.1 OpenCSV – это простой и удобный в использовании анализатор CSV для Java.

2.2 Тем не менее, opencsv.jar имеет следующие зависимости, такие как commons-lang3.jar , commons-text.jar , commons-beanutils.jar , commons-logging.jar и достояние-коллекция4: jar .

P.S Общий размер файла OpenCSV и его зависимость составляет около 2 м+.

2.3 Примеры Opencv для чтения или анализа CSV-файла.

Прочитайте все и возвращает Список<Строка[]> .

Считывайте строку за строкой и превращайте строку в Строку[] .

Полный OpenCSV пример синтаксического анализа CSV-файла.

Вывод

|/2.4 В качестве разделителя обычно используется точка с запятой

; . Это Пример OpenCSV показывает, как проанализировать CSV-файл с помощью пользовательского разделителя ; и пропустить первую строку.

Примечание

Использование точки с запятой ; в качестве разделителя не соответствует RFC 4180 . Однако в CSV-файлах часто встречаются разделители с запятой; не все следуют RFC. 3. OpenCSV – Преобразуйте CSV-файл в объект.

В

Opencv также поддерживает чтение или анализ CSV-файла непосредственно в объект Java. 3.1 В этом примере считывается файл CSV и сопоставляется с объектом

Страна с помощью @CSVBINDBYPOSITION .

Вывод

|/3.2 Если файл CSV содержит информацию о заголовке, мы также можем использовать

@CSVBINDBYNAME

для сопоставления файла CSV с объектом Java.

Вывод

Примечание

Для получения дополнительных примеров

OpenCSV , пожалуйста, ознакомьтесь с официальной документацией OpenCSV 4. CSV и встроенные запятые, двойные кавычки и разрывы строк 4.1 В

RFC 4180

описаны определения форматов файлов CSV, правило 1-5 является одним из основных и простых в реализации, реальные проблемы заключаются в правилах 6 и 7. 4.2 Таблица в файл CVS.

Dell//Dell//Samsung

Samsung//Приведенная выше таблица может быть представлена в формате CSV следующим образом:

4.3 Давайте протестируем приведенный выше CSV-файл с помощью
OpenCSV
еще раз и просмотрите результат:

|/Вывод

Приведенный выше результат является идеальным, точным совпадением. 5. Один класс для чтения и анализа CSV-файла. 5.1 Если вы не хотите загружать библиотеку

OpenCSV

из-за размера файла слишком большого количества зависимостей, ниже приведена моя реализация одного класса для анализа CSV-файла.

Тот же CSV-файл, содержащий встроенные запятые, двойные кавычки и разрывы строк.

Реализация одного класса для анализа вышеупомянутого CSV-файла. Прочитайте комментарии для пояснения.

Выход.

Вывод правильный.

5.3 Прочитайте ниже модульные тесты для другого типа CSV-файла.

Просмотрите результат и модульные тесты;

CsvParserSimple

должен прочитать или проанализировать большинство стандартных CSV-файлов.

6. Строка#разделить для анализа CSV-файла.

6.1 Вопрос: Могу ли я использовать

Строку#split

для анализа простого CSV-файла? Да, если вы уверены, формат файла CSV является простым и не содержит никаких встроенных запятых, двойных кавычек и разрывов строк, как описано выше Проблемы с анализом CSV-файла

.

6.2 Поток Java 8 и пример разделения для анализа вышеупомянутого CSV-файла. Вывод 6.3 Вот стиль старой школы.

Скачать Исходный Код

$клон git

https://github.com/mkyong/core-java

$cd java-io/csv

Ссылки

RFC 4180

Википедия – Значения, разделенные запятыми (CSV)

Веб-сайт OpenCSV Как разделить строку в Java

Java – Чтение файла из папки ресурсов

<Предыдущий

автор
комментарии

Оригинал: “https://mkyong.com/java/how-to-read-and-parse-csv-file-in-java/”