Arbeiten mit CSV in Kotlin: Überblick über Bibliotheken und praktische Beispiele
CSV (Comma-Separated Values) ist eines der am weitesten verbreiteten Formate für den Austausch von Tabellendaten. In Kotlin gibt es, wie auch in Java, mehrere ausgereifte Bibliotheken für die Arbeit mit CSV. In diesem Artikel betrachten wir drei Hauptansätze: die leichte Bibliothek kotlin-csv, das leistungsstarke OpenCSV und das klassische Apache Commons CSV. Sie erfahren, wie Sie CSV-Dateien mit minimalem Aufwand lesen, schreiben und verarbeiten können.
1. Bibliothek kotlin-csv (empfohlene Variante)
kotlin-csv ist eine native Kotlin-Bibliothek, die vollständig in Kotlin ohne Abhängigkeiten von Java-Bibliotheken geschrieben ist. Sie ist ideal für moderne Kotlin-Projekte geeignet.
Einbindung (Gradle)
dependencies { implementation("com.github.doyaaaaaken:kotlin-csv-jvm:1.9.3")}CSV lesen
import com.github.doyaaaaaken.kotlincsv.dsl.csvReader
fun main() { val csvData = """ name,age,city Alice,30,New York Bob,25,London Charlie,35,Tokyo """.trimIndent()
val rows: List<List<String>> = csvReader().readAll(csvData) rows.forEach { row -> println("${row[0]} — ${row[1]} Jahre, ${row[2]}") }}CSV schreiben
import com.github.doyaaaaaken.kotlincsv.dsl.csvWriter
fun main() { val data = listOf( listOf("product", "price", "quantity"), listOf("Laptop", "1200", "5"), listOf("Mouse", "25", "50") ) csvWriter().open("inventory.csv") { writeRows(data) } println("Datei inventory.csv erstellt")}2. OpenCSV — bewährte Java-Bibliothek
OpenCSV ist eine der beliebtesten Java-Bibliotheken für die Arbeit mit CSV. Sie funktioniert in Kotlin aufgrund der vollständigen Kompatibilität hervorragend.
Einbindung (Gradle)
dependencies { implementation("com.opencsv:opencsv:5.9")}Lesen mit Mapping auf eine Klasse
import com.opencsv.bean.CsvToBeanBuilderimport java.io.FileReader
data class Person( @field:com.opencsv.bean.CsvBindByName(column = "name") val name: String, @field:com.opencsv.bean.CsvBindByName(column = "age") val age: Int, @field:com.opencsv.bean.CsvBindByName(column = "city") val city: String)
fun main() { val beans = CsvToBeanBuilder<Person>(FileReader("people.csv")) .withType(Person::class.java) .build() .parse()
beans.forEach { println("${it.name} (${it.age}) — ${it.city}") }}Objekte schreiben
import com.opencsv.bean.StatefulBeanToCsvimport com.opencsv.bean.StatefulBeanToCsvBuilderimport java.io.FileWriter
fun main() { val people = listOf( Person("Alice", 30, "New York"), Person("Bob", 25, "London") ) val writer = FileWriter("output.csv") val beanToCsv: StatefulBeanToCsv<Person> = StatefulBeanToCsvBuilder(writer).build() beanToCsv.write(people) writer.close() println("Fertig")}3. Apache Commons CSV — Industriestandard
Bibliothek der Apache Foundation, die verschiedene CSV-Formate unterstützt (Excel, MySQL, RFC 4180).
Einbindung (Gradle)
dependencies { implementation("org.apache.commons:commons-csv:1.11.0")}Lesen mit Kopfzeilen
import org.apache.commons.csv.CSVFormatimport org.apache.commons.csv.CSVParserimport java.io.FileReader
fun main() { val parser = CSVParser.parse( FileReader("data.csv"), CSVFormat.DEFAULT.withFirstRecordAsHeader() ) parser.forEach { record -> val name = record["name"] val age = record["age"] println("$name, Alter $age") }}Schreiben mit
Auch in der Bibliothek
E-Mail-Versand mit Kotlin: Bibliotheken und Codebeispiele
Kotlin-Anwendungsüberwachung: Bibliotheken und Tools zur Leistungsverfolgung
Arbeiten mit Daten in Kotlin: Bibliotheken und Werkzeuge für die Entwicklung
ARKit Swift: Das komplette ARKit-Tutorial mit Beispielen