Kotlin:
Arbeiten mit CSV

Wie:

Kotlin, eine statisch typisierte Programmiersprache, die auf der JVM läuft, enthält keine integrierte Bibliothek zur Verarbeitung von CSV-Dateien. Sie können jedoch die Java-BufferedReader- und FileWriter-Klassen für grundlegende Operationen verwenden oder beliebte Drittanbieterbibliotheken wie kotlinx.serialization und opencsv für fortgeschrittenere Funktionen nutzen.

Eine CSV-Datei mit BufferedReader lesen:

import java.io.BufferedReader
import java.io.FileReader

fun main() {
    val path = "data.csv"
    val br = BufferedReader(FileReader(path))
    br.useLines { lines ->
        lines.forEach { line ->
            val cols = line.split(',')
            println(cols)
        }
    }
}

Beispielausgabe:

[Name, Alter, Stadt]
[John Doe, 30, New York]
[Jane Smith, 25, London]

In eine CSV-Datei mit FileWriter schreiben:

import java.io.FileWriter

fun main() {
    val data = listOf(
        listOf("Name", "Alter", "Stadt"),
        listOf("John Doe", "30", "New York"),
        listOf("Jane Smith", "25", "London")
    )

    FileWriter("output.csv").use { writer ->
        data.forEach { row ->
            writer.write(row.joinToString(",") + "\n")
        }
    }
}

Dies wird output.csv mit den bereitgestellten Daten erstellen oder überschreiben.

Verwendung von kotlinx.serialization für die CSV-Serialisierung:

Zuerst fügen Sie die Abhängigkeit zu Ihrer build.gradle.kts hinzu:

implementation("org.jetbrains.kotlinx:kotlinx-serialization-csv:0.3.0")

Hinweis: Stellen Sie sicher, dass Sie die richtige Version und Konfiguration des Repositories haben.

Dann definieren Sie Ihre Datenklasse und verwenden Sie das Csv-Format für die Serialisierung:

import kotlinx.serialization.Serializable
import kotlinx.serialization.csv.Csv
import kotlinx.serialization.encodeToString

@Serializable
data class Person(val name: String, val alter: Int, val stadt: String)

fun main() {
    val csvFormat = Csv { delimiter = ',' }
    val data = listOf(
        Person("John Doe", 30, "New York"),
        Person("Jane Smith", 25, "London")
    )

    val csvData = csvFormat.encodeToString(data)
    println(csvData)
}

Beispielausgabe:

John Doe,30,New York
Jane Smith,25,London

Verwendung von OpenCSV für fortgeschrittene Operationen:

Fügen Sie OpenCSV zu den Abhängigkeiten Ihres Projekts hinzu:

implementation("com.opencsv:opencsv:5.6")

Lesen und Schreiben mit OpenCSV:

import com.opencsv.CSVReader
import com.opencsv.CSVWriter
import java.io.FileReader
import java.io.FileWriter

fun main() {
    // CSV lesen
    CSVReader(FileReader("data.csv")).use { csvReader ->
        val einträge = csvReader.readAll()
        einträge.forEach { println(it.toList()) }
    }

    // CSV schreiben
    CSVWriter(FileWriter("output.csv")).use { csvWriter ->
        val einträge = listOf(
            arrayOf("Name", "Alter", "Stadt"),
            arrayOf("John Doe", "30", "New York"),
            arrayOf("Jane Smith", "25", "London")
        )
        csvWriter.writeAll(einträge)
    }
}

Diese Code-Schnipsel demonstrieren die Flexibilität, die Kotlin beim Arbeiten mit CSV-Dateien bietet, und ermöglichen es Ihnen, die Methode auszuwählen, die am besten zu den Anforderungen Ihres Projekts passt.