Васильев Андрей Михайлович, 2024
Версии презентации
Каждому разработчику доступна возможность работы с файлами:
Разработчик может реализовать любую схему хранения данных
Почему стоит разработать своё представление данных:
Почему стоит использовать стандартные представления:
Формат CSV (значения, разделённые запятыми) чисто технически не является стандартом, т.к. не существует формального документа, описывающего его структуру
Однако данный формат явился одним из первых подходов к представлению табличных данных:
Рассмотрим следующий пример:
Id,SideA,SideB,SideC,BorderColor,FillColor,Description
1,1,2,5,GREEN,RED,"странные данные, это неправильный треугольник"
2,2,3,5,RED,GREEN,"точки расположены на отрезке"
10,2,3,4,RED,GREEN,"обычный треугольник"
"com.jsoizo:kotlin-csv-jvm:1.10.0"
Для чтения данных необходимо создать объект класса
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)
Ввиду увеличения объёма кода внутри приложения становится вопрос о выделении различных компонентов, решающих конкретные задачи
Первым таким компонентом может стать хранилище данных
Для обеспечения данной функции достаточным видится следующий набор функций:
Если в приложении несколько ключевых сущностей, то для каждой следует завести своё хранилище