Kotlin:
Trabalhando com CSV
Como Fazer:
Kotlin, sendo uma linguagem de programação de tipagem estática que é executada na JVM, não inclui uma biblioteca embutida para o manuseio de arquivos CSV. No entanto, você pode usar as classes BufferedReader
e FileWriter
do Java para operações básicas, ou aproveitar bibliotecas de terceiros populares como kotlinx.serialization
e opencsv
para funcionalidades mais avançadas.
Lendo um arquivo 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)
}
}
}
Saída de amostra:
[Name, Age, City]
[John Doe, 30, New York]
[Jane Smith, 25, London]
Escrevendo em um arquivo CSV usando 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")
}
}
}
Isso criará ou sobrescreverá output.csv
com os dados fornecidos.
Usando kotlinx.serialization para serialização CSV:
Primeiro, adicione a dependência ao seu build.gradle.kts
:
implementation("org.jetbrains.kotlinx:kotlinx-serialization-csv:0.3.0")
Nota: Certifique-se de que você tenha a versão correta e a configuração do repositório.
Então, defina sua classe de dados e use o formato Csv
para serialização:
import kotlinx.serialization.Serializable
import kotlinx.serialization.csv.Csv
import kotlinx.serialization.encodeToString
@Serializable
data class Pessoa(val nome: String, val idade: Int, val cidade: String)
fun main() {
val formatoCsv = Csv { delimiter = ',' }
val data = listOf(
Pessoa("John Doe", 30, "New York"),
Pessoa("Jane Smith", 25, "London")
)
val dadosCsv = formatoCsv.encodeToString(data)
println(dadosCsv)
}
Saída de amostra:
John Doe,30,New York
Jane Smith,25,London
Usando OpenCSV para operações avançadas:
Adicione OpenCSV às dependências do seu projeto:
implementation("com.opencsv:opencsv:5.6")
Lendo e escrevendo com OpenCSV:
import com.opencsv.CSVReader
import com.opencsv.CSVWriter
import java.io.FileReader
import java.io.FileWriter
fun main() {
// Lendo CSV
CSVReader(FileReader("data.csv")).use { leitorCsv ->
val entradas = leitorCsv.readAll()
entradas.forEach { println(it.toList()) }
}
// Escrevendo CSV
CSVWriter(FileWriter("output.csv")).use { escritorCsv ->
val entradas = listOf(
arrayOf("Name", "Age", "City"),
arrayOf("John Doe", "30", "New York"),
arrayOf("Jane Smith", "25", "London")
)
escritorCsv.writeAll(entradas)
}
}
Esses trechos de código demonstram a flexibilidade que Kotlin oferece ao trabalhar com arquivos CSV, permitindo que você escolha o método que melhor se adapta às necessidades do seu projeto.