Kotlin:
Työskentely CSV:n kanssa

Miten:

Kotlin, ollessaan staattisesti tyypitetty ohjelmointikieli, joka toimii JVM:llä, ei sisällä sisäänrakennettua kirjastoa CSV-tiedostojen käsittelyyn. Voit kuitenkin käyttää Javan BufferedReader- ja FileWriter-luokkia perusoperaatioihin tai hyödyntää suosittuja kolmannen osapuolen kirjastoja, kuten kotlinx.serialization ja opencsv, monimutkaisempaan toiminnallisuuteen.

CSV-tiedoston lukeminen BufferedReaderin avulla:

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)
        }
    }
}

Esimerkkituloste:

[Nimi, Ikä, Kaupunki]
[John Doe, 30, New York]
[Jane Smith, 25, Lontoo]

Kirjoittaminen CSV-tiedostoon FileWriterin avulla:

import java.io.FileWriter

fun main() {
    val data = listOf(
        listOf("Nimi", "Ikä", "Kaupunki"),
        listOf("John Doe", "30", "New York"),
        listOf("Jane Smith", "25", "Lontoo")
    )

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

Tämä luo tai korvaa output.csv tiedoston annetuilla tiedoilla.

Käyttäen kotlinx.serializationia CSV-serialisointiin:

Lisää ensin riippuvuus build.gradle.kts-tiedostoosi:

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

Huom: Varmista, että sinulla on oikea versio ja repositoorion konfiguraatio.

Määritä sitten dataluokkasi ja käytä Csv formaattia serialisointiin:

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

@Serializable
data class Henkilö(val nimi: String, val ikä: Int, val kaupunki: String)

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

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

Esimerkkituloste:

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

Käyttäen OpenCSV:tä monimutkaisempiin operaatioihin:

Lisää OpenCSV riippuvuudeksi projektisi:

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

Lukeminen ja kirjoittaminen OpenCSV:llä:

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

fun main() {
    // CSV:n lukeminen
    CSVReader(FileReader("data.csv")).use { csvReader ->
        val merkinnät = csvReader.readAll()
        merkinnät.forEach { println(it.toList()) }
    }

    // CSV:n kirjoittaminen
    CSVWriter(FileWriter("output.csv")).use { csvWriter ->
        val merkinnät = listOf(
            arrayOf("Nimi", "Ikä", "Kaupunki"),
            arrayOf("John Doe", "30", "New York"),
            arrayOf("Jane Smith", "25", "Lontoo")
        )
        csvWriter.writeAll(merkinnät)
    }
}

Nämä koodinpätkät osoittavat Kotlinin joustavuuden työskennellessä CSV-tiedostojen kanssa, antaen sinulle mahdollisuuden valita projektiisi parhaiten sopivan menetelmän.