Arbeiten mit CSV in Kotlin: Bibliotheken und Codebeispiele
CSV (Comma-Separated Values) ist eines der beliebtesten Formate für den Austausch von Tabellendaten. In Kotlin, wie auch in Java, gibt es mehrere effiziente Bibliotheken für die Arbeit mit CSV-Dateien. In diesem Artikel werden wir drei Hauptansätze im Detail betrachten: die native Bibliothek kotlin-csv, das bewährte OpenCSV und das leistungsstarke Apache Commons CSV. Sie erfahren, wie Sie CSV-Daten mit Codebeispielen parsen, schreiben und verarbeiten.
1. Bibliothek kotlin-csv (Kotlinx.serialization)
kotlin-csv ist eine moderne, in reinem Kotlin geschriebene Bibliothek. Sie lässt sich ideal in kotlinx.serialization integrieren, was eine automatische Zuordnung von CSV-Zeilen zu data-Klassen ermöglicht. Dies ist die beste Wahl für neue Kotlin-Projekte.
Installation
Fügen Sie die Abhängigkeit in build.gradle.kts hinzu:
dependencies { implementation("com.github.doyaaaaaken:kotlin-csv-jvm:1.9.3") implementation("org.jetbrains.kotlinx:kotlinx-serialization-csv:1.6.3")}Beispiel für das Lesen von CSV
import com.github.doyaaaaaken.kotlincsv.dsl.csvReaderimport kotlinx.serialization.Serializableimport kotlinx.serialization.csv.Csv
@Serializabledata class User(val name: String, val age: Int, val email: String)
fun readCsvWithKotlinCsv() { val csvData = """ name,age,email Alice,30,alice@example.com Bob,25,bob@test.org """.trimIndent()
// Variante 1: Manuelles Parsen val rows: List<List<String>> = csvReader().readAll(csvData) rows.forEach { row -> println("Name: ${row[0]}, Alter: ${row[1]}, E-Mail: ${row[2]}") }
// Variante 2: Mit Serialisierung val csv = Csv { ignoreUnknownColumns = true } val users: List<User> = csv.decodeFromString(csvData) users.forEach { println(it) }}Beispiel für das Schreiben von CSV
import com.github.doyaaaaaken.kotlincsv.dsl.csvWriter
fun writeCsvWithKotlinCsv() { val data = listOf( listOf("Name", "Alter", "Stadt"), listOf("John", "28", "New York"), listOf("Jane", "32", "London") ) csvWriter().open("output.csv") { writeRows(data) } println("CSV-Datei erfolgreich geschrieben.")}2. Bibliothek OpenCSV
OpenCSV ist eine klassische Java-Bibliothek, die in Kotlin hervorragend funktioniert. Sie bietet flexible Parsing-Möglichkeiten, einschließlich der Verarbeitung von Anführungszeichen, Escape-Sequenzen und Unterstützung für verschiedene Trennzeichen.
Installation
dependencies { implementation("com.opencsv:opencsv:5.9")}Beispiel für das Lesen mit Mapping in Objekte
import com.opencsv.CSVReaderBuilderimport com.opencsv.bean.CsvToBeanBuilderimport com.opencsv.bean.HeaderColumnNameMappingStrategyimport java.io.StringReader
data class Product(val id: Int, val name: String, val price: Double)
fun readCsvWithOpenCsv() { val csvContent = """ id,name,price 1,Laptop,999.99 2,Maus,25.50 """.trimIndent()
// Manuelles Parsen val reader = CSVReaderBuilder(StringReader(csvContent)).build() reader.forEach { line -> println("ID: ${line[0]}, Name: ${line[1]}, Preis: ${line[2]}") }
// Mapping in data-Klasse val strategy = HeaderColumnNameMappingStrategy<Product>() strategy.type = Product::class.java val beans = CsvToBeanBuilder<Product>(StringReader(csvContent)) .withMappingStrategy(strategy) .build() .parse() beans.forEach { println(it) }}Beispiel für das Schreiben von CSV
import com.opencsv.CSVWriterimport java.io.StringWriter
fun writeCsvWithOpenCsv() { val stringWriter = StringWriter() val writer = CSVWriter(stringWriter) val Auch in der Bibliothek
Redis-Client für C# (.NET): StackExchange.Redis — Verbindung und Beispiele
Knex.js für JavaScript (Node.js): Komplettes Tutorial mit Beispielen
gRPC für C++: Komplettguide mit Praxisbeispielen