Мульти тематический

Примеры кода на PHP, Kotlin. Настройка хостинга. И другое, связанное с веб разработкой.

Чтение csv файла в Kotlin

5
(1)

Как сделать чтение csv файла в Kotlin. Используем класс CsvReader для работы с csv файлами. И какие ошибки могут появляться из-за некорректного csv файла.


  1. Чтение csv файла в Kotlin
  2. Как использовать класс CsvReader.
  3. Из особенностей класса

Чтение csv файла в Kotlin с помощью класса CsvReader

import android.content.Context

class CsvReader(val context: Context) {
    // Открыть файл и получить всё содержимое
    private fun open(fileName: String): String {
        val inputStream = this.context.assets.open(fileName)
        return inputStream.bufferedReader().use { it.readText() }
    }

    // Заполнить csv данными ArrayList
    private fun fullArrayList(csvData: String): ArrayList<Array<String>> {
        val simpleList = arrayListOf<Array<String>>()
        val rows: List<String> = csvData.split("\n").map { it.trim() }

        for (row in rows) {
            val cells: List<String> = row.split(";").map { it.trim() }

            val cellInfo = Array(4) { "it = $it" }
            cellInfo[0] = cells[0]
            cellInfo[1] = cells[1]
            cellInfo[2] = cells[2]
            cellInfo[3] = "0"

            simpleList.add(cellInfo)
        }

        return simpleList
    }

    // Прочитать данных из csv файла в массив
    fun read(fileName: String): ArrayList<Array<String>> {
        val csvData = this.open(fileName)
        return fullArrayList(csvData)
    }
}

Если код показался слишком запутанным, то есть отдельное описание как создавать динамические массивы в Kotlin.


Как использовать класс CsvReader.

Csv файл располагаем в папке:

app/assets/example.csv

Создаём объект класса. Передаём параметр context. Например, this — это контекст текущего слоя (layout), в данном случае MainActivity.

val fileReader = CsvReader(this)
return fileReader.loadCsvFileSignInfo("example.csv")

Из особенностей класса

Тут строго указаны делимитеры. Если их вынести переменными, то класс станет более универсальным. Это уже на своё усмотрение.

При чтении csv файла бывают ошибки с разделяющими символами. Лишний делимитер вызовет ошибку. Некоторые языки прощают такой подход, но не Kotlin.

Насколько полезным был этот пост?

Нажмите на звезду, чтобы оценить это!

Средний рейтинг 5 / 5. Подсчет голосов: 1

Пока нет голосов! Будьте первым, кто оценит этот пост.

Мы сожалеем, что этот пост не был полезен для вас!

Давайте улучшим этот пост!

Расскажите нам, как мы можем улучшить этот пост?

0 0 голоса
Рейтинг статьи
Подписаться
Уведомить о
guest
0 комментариев
Межтекстовые Отзывы
Посмотреть все комментарии
0
Оставьте комментарий! Напишите, что думаете по поводу статьи.x
()
x