Kotlin में CSV के साथ कार्य: लाइब्रेरीज़ का अवलोकन और व्यावहारिक उदाहरण
\n\nCSV (Comma-Separated Values) — सारणीबद्ध डेटा के आदान-प्रदान के लिए सबसे सामान्य प्रारूपों में से एक है। Kotlin में, Java की तरह ही, CSV के साथ कार्य करने के लिए कई परिपक्व लाइब्रेरीज़ मौजूद हैं। इस लेख में हम तीन मुख्य दृष्टिकोणों पर विचार करेंगे: हल्की लाइब्रेरी kotlin-csv, शक्तिशाली OpenCSV और क्लासिक Apache Commons CSV। आप सीखेंगे कि न्यूनतम प्रयास के साथ CSV फ़ाइलों को कैसे पढ़ें, लिखें और प्रोसेस करें।
\n\n1. kotlin-csv लाइब्रेरी (अनुशंसित विकल्प)
\n\nkotlin-csv — यह एक मूल Kotlin लाइब्रेरी है, जो पूरी तरह से Kotlin में Java लाइब्रेरीज़ पर निर्भरता के बिना लिखी गई है। यह Kotlin पर आधुनिक प्रोजेक्ट्स के लिए आदर्श है।
\n\nकनेक्शन (Gradle)
\ndependencies {\n implementation("com.github.doyaaaaaken:kotlin-csv-jvm:1.9.3")\n}\n\nCSV पढ़ना
\nimport com.github.doyaaaaaken.kotlincsv.dsl.csvReader\n\nfun main() {\n val csvData = """\n name,age,city\n Alice,30,New York\n Bob,25,London\n Charlie,35,Tokyo\n """.trimIndent()\n\n val rows: List<List<String>> = csvReader().readAll(csvData)\n rows.forEach { row ->\n println("${row[0]} — ${row[1]} वर्ष, ${row[2]}")\n }\n}\n\nCSV लिखना
\nimport com.github.doyaaaaaken.kotlincsv.dsl.csvWriter\n\nfun main() {\n val data = listOf(\n listOf("product", "price", "quantity"),\n listOf("Laptop", "1200", "5"),\n listOf("Mouse", "25", "50")\n )\n csvWriter().open("inventory.csv") {\n writeRows(data)\n }\n println("फ़ाइल inventory.csv बनाई गई")\n}\n\n2. OpenCSV — सिद्ध Java लाइब्रेरी
\n\nOpenCSV CSV के साथ कार्य करने के लिए सबसे लोकप्रिय Java लाइब्रेरीज़ में से एक है। यह पूर्ण संगतता के कारण Kotlin में बहुत अच्छी तरह से काम करती है।
\n\nकनेक्शन (Gradle)
\ndependencies {\n implementation("com.opencsv:opencsv:5.9")\n}\n\nक्लास में मैपिंग के साथ पढ़ना
\nimport com.opencsv.bean.CsvToBeanBuilder\nimport java.io.FileReader\n\ndata class Person(\n @field:com.opencsv.bean.CsvBindByName(column = "name")\n val name: String,\n @field:com.opencsv.bean.CsvBindByName(column = "age")\n val age: Int,\n @field:com.opencsv.bean.CsvBindByName(column = "city")\n val city: String\n)\n\nfun main() {\n val beans = CsvToBeanBuilder<Person>(FileReader("people.csv"))\n .withType(Person::class.java)\n .build()\n .parse()\n\n beans.forEach { println("${it.name} (${it.age}) — ${it.city}") }\n}\n\nऑब्जेक्ट लिखना
\nimport com.opencsv.bean.StatefulBeanToCsv\nimport com.opencsv.bean.StatefulBeanToCsvBuilder\nimport java.io.FileWriter\n\nfun main() {\n val people = listOf(\n Person("Alice", 30, "New York"),\n Person("Bob", 25, "London")\n )\n val writer = FileWriter("output.csv")\n val beanToCsv: StatefulBeanToCsv<Person> = StatefulBeanToCsvBuilder(writer).build()\n beanToCsv.write(people)\n writer.close()\n println("तैयार")\n}\n\n3. Apache Commons CSV — औद्योगिक मानक
\n\nApache Foundation की लाइब्रेरी, जो विभिन्न CSV प्रारूपों (Excel, MySQL, RFC 4180) का समर्थन करती है।
\n\nकनेक्शन (Gradle)
\ndependencies {\n implementation("org.apache.commons:commons-csv:1.11.0")\n}\n\nहेडर के साथ पढ़ना
\nimport org.apache.commons.csv.CSVFormat\nimport org.apache.commons.csv.CSVParser\nimport java.io.FileReader\n\nfun main() {\n val parser = CSVParser.parse(\n FileReader("data.csv"),\n CSVFormat.DEFAULT.withFirstRecordAsHeader()\n )\n parser.forEach { record ->\n val name = record["name"]\n val age = record["age"]\n println("$name, आयु $age")\n }\n}\n\n