Kotlin:
CSV와 함께 작업하기

방법:

정적으로 타입이 지정된 프로그래밍 언어인 코틀린은 JVM에서 실행되지만, CSV 파일을 처리하기 위한 내장 라이브러리를 포함하고 있지 않습니다. 하지만, Java의 BufferedReaderFileWriter 클래스를 기본 작업에 사용하거나, kotlinx.serializationopencsv와 같은 인기 있는 제3자 라이브러리를 이용하여 보다 고급 기능을 활용할 수 있습니다.

BufferedReader를 사용하여 CSV 파일 읽기:

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]

FileWriter를 사용하여 CSV 파일에 쓰기:

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을 사용한 CSV 시리얼라이제이션:

먼저, build.gradle.kts에 의존성을 추가하세요:

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

참고: 올바른 버전과 저장소 설정을 확인하세요.

그 다음, 데이터 클래스를 정의하고 시리얼라이제이션을 위해 Csv 형식을 사용하세요:

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를 추가하세요:

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

이 코드 조각들은 코틀린이 CSV 파일 작업을 위해 제공하는 유연성을 보여 주며, 프로젝트의 요구에 가장 잘 맞는 방법을 선택할 수 있게 합니다.