Kotlin में CSV के साथ कार्य: लाइब्रेरीज़ और व्यावहारिक उदाहरण
CSV (Comma-Separated Values) प्रारूप सारणीबद्ध डेटा के आदान-प्रदान के सबसे लोकप्रिय तरीकों में से एक बना हुआ है। Kotlin भाषा में, जो Android, बैकएंड (Ktor, Spring Boot) और स्क्रिप्ट्स के विकास के लिए सक्रिय रूप से उपयोग की जाती है, CSV के साथ काम करने के लिए कई सुविधाजनक लाइब्रेरीज़ मौजूद हैं। इस लेख में हम तीन मुख्य दृष्टिकोणों पर चर्चा करेंगे: हल्की लाइब्रेरी kotlin-csv, शक्तिशाली OpenCSV और क्लासिक Apache Commons CSV।
1. kotlin-csv लाइब्रेरी (अनुशंसित)
यह एक विशुद्ध Kotlin समाधान है जिसे Java पर अतिरिक्त निर्भरता की आवश्यकता नहीं है। यह उन परियोजनाओं के लिए आदर्श है जहाँ संक्षिप्तता और प्रकार सुरक्षा महत्वपूर्ण है।
स्थापना (Gradle)
// build.gradle.ktsimplementation("com.github.doyaaaaaken:kotlin-csv-jvm:1.9.3")CSV पढ़ना
लाइब्रेरी स्वचालित विभाजक पहचान, उद्धरण एस्केपिंग और हेडर का समर्थन करती है।
import com.github.doyaaaaaken.kotlincsv.dsl.csvReader
fun readCsvExample() { val csvData = """ name,age,city Alice,30,New York Bob,25,London """.trimIndent()
val rows: List<List<String>> = csvReader().readAll(csvData)
rows.forEach { row -> println("नाम: ${row[0]}, आयु: ${row[1]}, शहर: ${row[2]}") }}
// हेडर के साथ पढ़नाfun readWithHeaders() { val data = csvReader().readAllWithHeader(csvData) data.forEach { row -> println("${row["name"]} की आयु ${row["age"]} वर्ष है") }}CSV लिखना
import com.github.doyaaaaaken.kotlincsv.dsl.csvWriter
fun writeCsvExample() { val rows = listOf( listOf("उत्पाद", "मूल्य", "मात्रा"), listOf("लैपटॉप", "1200", "5"), listOf("माउस", "25", "50") )
csvWriter().writeAll(rows) // कंसोल में आउटपुट: // उत्पाद,मूल्य,मात्रा // लैपटॉप,1200,5 // माउस,25,50}2. OpenCSV (जटिल परिदृश्यों के लिए)
OpenCSV एक परिपक्व Java लाइब्रेरी है जो Kotlin में बढ़िया काम करती है। यह data-क्लासेज़ में मैपिंग, कस्टम विभाजक और बड़ी फ़ाइलों की स्ट्रीम प्रोसेसिंग का समर्थन करती है।
स्थापना
implementation("com.opencsv:opencsv:5.9")data-क्लास में मैपिंग के साथ पढ़ना
import com.opencsv.bean.CsvToBeanBuilderimport java.io.StringReader
data class Person( @CsvBindByName(column = "name") val name: String, @CsvBindByName(column = "age") val age: Int, @CsvBindByName(column = "city") val city: String)
fun readWithOpenCsv() { val csv = """ name,age,city Alice,30,New York Bob,25,London """.trimIndent()
val beans: List<Person> = CsvToBeanBuilder<Person>(StringReader(csv)) .withType(Person::class.java) .build() .parse()
beans.forEach { println(it) } // Person(name=Alice, age=30, city=New York) // Person(name=Bob, age=25, city=London)}हेडर के साथ लिखना
import com.opencsv.bean.StatefulBeanToCsvimport com.opencsv.bean.StatefulBeanToCsvBuilderimport java.io.StringWriter
fun writeWithOpenCsv() { val people = listOf( Person("चार्ली", 35, "पेरिस"), Person("डायना", 28, "टोक्यो") )
val writer = StringWriter() val beanToCsv: StatefulBeanToCsv<Person> = StatefulBeanToCsvBuilder<Person>(writer) .build() beanToCsv.write(people)
println(writer.toString()) // name,age,city // चार्ली,35,पेरिस // डायना,28,टोक्यो}3. Apache Commons CSV (अनुकूलता के लिए)
यह लाइब्रेरी Java के लिए डी-फैक्टो मानक है। यह पार्सिंग पर निम्न-स्तरीय नियंत्रण प्रदान करती है और विभिन्न प्रारूपों (Excel, MySQL, TSV) का समर्थन करती है।