В этой статье показано, как читать и анализировать значения, разделенные запятыми (CSV) файл.
Темы:
- CSV-файл и RFC 4180
- OpenCSV – Чтение и анализ CSV-файла
- OpenCSV – Преобразование CSV–файла в объект
- Проблемы с анализом CSV-файла – Встроенные запятые, двойные кавычки и разрывы строк
- Один класс для чтения и анализа CSV-файла
- Строка#разделить для анализа 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 Вопрос: Могу ли я использовать
для анализа простого 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 – Чтение файла из папки ресурсов
<Предыдущий
- Следующий >
- идентификатор текущего сообщения
- |/загружено через JS
Оригинал: “https://mkyong.com/java/how-to-read-and-parse-csv-file-in-java/”