Kotlin:
Trabajando con CSV
Cómo:
Kotlin, siendo un lenguaje de programación de tipos estáticos que se ejecuta en la JVM, no incluye una biblioteca integrada para manejar archivos CSV. Sin embargo, puedes utilizar las clases BufferedReader
y FileWriter
de Java para operaciones básicas, o aprovechar bibliotecas de terceros populares como kotlinx.serialization
y opencsv
para una funcionalidad más avanzada.
Leer un archivo CSV usando 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)
}
}
}
Salida de muestra:
[Nombre, Edad, Ciudad]
[John Doe, 30, Nueva York]
[Jane Smith, 25, Londres]
Escribir en un archivo CSV usando FileWriter:
import java.io.FileWriter
fun main() {
val data = listOf(
listOf("Nombre", "Edad", "Ciudad"),
listOf("John Doe", "30", "Nueva York"),
listOf("Jane Smith", "25", "Londres")
)
FileWriter("output.csv").use { writer ->
data.forEach { row ->
writer.write(row.joinToString(",") + "\n")
}
}
}
Esto creará o sobrescribirá output.csv
con los datos proporcionados.
Usar kotlinx.serialization para la serialización de CSV:
Primero, agrega la dependencia a tu build.gradle.kts
:
implementation("org.jetbrains.kotlinx:kotlinx-serialization-csv:0.3.0")
Nota: Asegúrate de tener la versión correcta y la configuración del repositorio.
Luego, define tu clase de datos y usa el formato Csv
para la serialización:
import kotlinx.serialization.Serializable
import kotlinx.serialization.csv.Csv
import kotlinx.serialization.encodeToString
@Serializable
data class Persona(val nombre: String, val edad: Int, val ciudad: String)
fun main() {
val csvFormat = Csv { delimiter = ',' }
val data = listOf(
Persona("John Doe", 30, "Nueva York"),
Persona("Jane Smith", 25, "Londres")
)
val csvData = csvFormat.encodeToString(data)
println(csvData)
}
Salida de muestra:
John Doe,30,Nueva York
Jane Smith,25,Londres
Usar OpenCSV para operaciones avanzadas:
Agrega OpenCSV a las dependencias de tu proyecto:
implementation("com.opencsv:opencsv:5.6")
Lectura y escritura con OpenCSV:
import com.opencsv.CSVReader
import com.opencsv.CSVWriter
import java.io.FileReader
import java.io.FileWriter
fun main() {
// Leyendo CSV
CSVReader(FileReader("data.csv")).use { csvReader ->
val entries = csvReader.readAll()
entries.forEach { println(it.toList()) }
}
// Escribiendo CSV
CSVWriter(FileWriter("output.csv")).use { csvWriter ->
val entries = listOf(
arrayOf("Nombre", "Edad", "Ciudad"),
arrayOf("John Doe", "30", "Nueva York"),
arrayOf("Jane Smith", "25", "Londres")
)
csvWriter.writeAll(entries)
}
}
Estos fragmentos de código demuestran la flexibilidad que Kotlin ofrece al trabajar con archivos CSV, permitiéndote elegir el método que mejor se adapte a las necesidades de tu proyecto.