Kotlin:
การทำงานกับ CSV

วิธีการ:

Kotlin เป็นภาษาโปรแกรมที่เป็น static type ที่ทำงานบน JVM ไม่มีไลบรารีในตัวสำหรับการจัดการไฟล์ CSV อย่างไรก็ตาม คุณสามารถใช้คลาส BufferedReader และ FileWriter ของ Java สำหรับการดำเนินการพื้นฐาน หรือใช้ไลบรารีของบุคคลที่สามที่ได้รับความนิยม เช่น kotlinx.serialization และ opencsv เพื่อฟังก์ชั่นการทำงานขั้นสูง

การอ่านไฟล์ CSV โดยใช้ BufferedReader:

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

ตัวอย่างผลลัพธ์:

[Name, Age, City]
[John Doe, 30, New York]
[Jane Smith, 25, London]

การเขียนไปยังไฟล์ CSV โดยใช้ FileWriter:

import java.io.FileWriter

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

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

นี่จะสร้างหรือเขียนทับ output.csv ด้วยข้อมูลที่ให้มา

การใช้ kotlinx.serialization สำหรับการ serialize CSV:

เริ่มต้นด้วยการเพิ่ม dependency ลงใน build.gradle.kts ของคุณ:

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

หมายเหตุ: ตรวจสอบให้แน่ใจว่าคุณมีเวอร์ชันที่ถูกต้องและการตั้งค่า repository

จากนั้น กำหนด data class ของคุณและใช้ฟอร์แมต Csv สำหรับการ serialize:

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

@Serializable
data class Person(val name: String, val age: Int, val city: 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)
}

ตัวอย่างผลลัพธ์:

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

การใช้ OpenCSV สำหรับการดำเนินการขั้นสูง:

เพิ่ม OpenCSV เข้าไปใน dependencies ของโปรเจคของคุณ:

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

การอ่านและเขียนด้วย OpenCSV:

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

fun main() {
    // การอ่าน CSV
    CSVReader(FileReader("data.csv")).use { csvReader ->
        val entries = csvReader.readAll()
        entries.forEach { println(it.toList()) }
    }

    // การเขียน CSV
    CSVWriter(FileWriter("output.csv")).use { csvWriter ->
        val entries = listOf(
            arrayOf("Name", "Age", "City"),
            arrayOf("John Doe", "30", "New York"),
            arrayOf("Jane Smith", "25", "London")
        )
        csvWriter.writeAll(entries)
    }
}

ตัวอย่างเหล่านี้แสดงให้เห็นถึงความยืดหยุ่นที่ Kotlin มอบให้เมื่อทำงานกับไฟล์ CSV ช่วยให้คุณสามารถเลือกวิธีการที่เหมาะสมที่สุดกับความต้องการของโปรเจคของคุณ