Формат CSV (значения, разделённые запятыми) чисто технически не является
стандартом, т.к. не существует формального документа, описывающего его структуру
Однако данный формат явился одним из первых подходов к представлению табличных
данных:
Представление данных является текстовым, т.е. не требует специального
дорогостоящего офисного пакета
В каждой строке размещаются ячейки таблицы, разделённые запятыми
Первая строка может содержать не значения, а названия столбцов
Все значения ячеек — строковые, их необходимо преобразовать к корректному
числовому
Id,SideA,SideB,SideC,BorderColor,FillColor,Description1,1,2,5,GREEN,RED,"странные данные, это неправильный треугольник"2,2,3,5,RED,GREEN,"точки расположены на отрезке"10,2,3,4,RED,GREEN,"обычный треугольник"
Первая строка содержит название столбцов
Следующие три строки содержат описание треугольников
Если в значении поля нет запятой, то оно пишется без кавычек
Вручную учесть все особенности будет трудно, особенно если они нигде явно не
специфицированы
Для чтения данных необходимо создать объект класса
com.github.doyaaaaaken.kotlincsv.client.CsvReader через конструктор или
функцию-помощник com.github.doyaaaaaken.kotlincsv.dsl.csvReader()
Название классов отличается от названия библиотеки, т.к. сменился ответственный
разработчик
Данный объект предоставляет следующие функции:
readAll(): List<List<String>> — преобразует CSV-документ в список списков
строк. Каждой строке входного файла соответствует список строк в результате
работы функции
readAllWithHeader(): List<Map<String,String>> — преобразует CSV-документ в
список словарей. Ключами словаря являются строки, записанные в строке-заголовке
Данные могут быть считаны из строки, файла, входного потока данных
Для записи данных необходимо создать объект класса
com.github.doyaaaaaken.kotlincsv.client.CsvWriter через конструктор или
функцию-помощник com.github.doyaaaaaken.kotlincsv.dsl.csvWriter()
Данный объект предоставляет функцию
writeAll(rows: List<List<String>>, file: File)
Первым аргументом указывается список строк для записи
Вторым аргументом указывается файл, либо название файла, либо поток вывода