Kotlin में फ़ाइल सिस्टम के साथ काम करने का परिचय
फ़ाइल सिस्टम के साथ काम करना Kotlin में एप्लिकेशन विकसित करते समय बुनियादी कार्यों में से एक है। चाहे वह कंसोल एप्लिकेशन हो, सर्वर प्रोजेक्ट हो या Android के लिए मोबाइल एप्लिकेशन, आपको लगभग निश्चित रूप से फ़ाइलों को पढ़ने, लिखने, स्थानांतरित करने या हटाने की आवश्यकता होगी। Kotlin, JVM के ऊपर काम करने वाली एक आधुनिक भाषा होने के नाते, Java मानक लाइब्रेरी की सभी क्षमताएं प्रदान करती है, लेकिन साथ ही अपने सुविधाजनक एक्सटेंशन और सिंटैक्टिक शुगर भी जोड़ती है।
इस लेख में, हम विस्तार से देखेंगे कि Kotlin में फ़ाइल सिस्टम के साथ प्रभावी ढंग से कैसे काम किया जाए। आप सीखेंगे कि फ़ाइलें और निर्देशिकाएँ कैसे बनाएँ और हटाएँ, डेटा कैसे पढ़ें और लिखें, निर्देशिकाओं को कैसे ट्रैवर्स करें और अपवादों को कैसे संभालें। सभी कोड उदाहरण बिना किसी तृतीय-पक्ष लाइब्रेरी के शुद्ध Kotlin में लिखे जाएंगे।
मुख्य क्लास और दृष्टिकोण
Kotlin में फ़ाइल सिस्टम के साथ काम करने के लिए दो मुख्य API का उपयोग किया जाता है:
- java.io.File — Java से क्लासिक API, जिसे Kotlin अपने एक्सटेंशन फ़ंक्शंस के साथ विस्तारित करता है।
- java.nio.file.Path और java.nio.file.Files — Java NIO से अधिक आधुनिक और कार्यात्मक API।
दोनों दृष्टिकोण Kotlin के साथ पूरी तरह से संगत हैं, लेकिन दूसरे (NIO) को नए प्रोजेक्ट्स के लिए अनुशंसित किया जाता है, क्योंकि यह अधिक समृद्ध क्षमताएं और बेहतर प्रदर्शन प्रदान करता है।
फ़ाइलें और निर्देशिकाएँ बनाना
चलिए सबसे सरल से शुरू करते हैं — फ़ाइल बनाना। Kotlin में यह बहुत संक्षिप्त रूप से किया जाता है:
import java.io.File
fun main() { val file = File("example.txt") // फ़ाइल बनाना (यदि फ़ाइल बनाई गई तो true लौटाता है) val created = file.createNewFile() if (created) { println("फ़ाइल बनाई गई: ${file.absolutePath}") } else { println("फ़ाइल पहले से मौजूद है") } // निर्देशिका बनाना val dir = File("myDirectory") val dirCreated = dir.mkdir() // या नेस्टेड निर्देशिकाएँ बनाने के लिए mkdirs() println("निर्देशिका बनाई गई: $dirCreated")}mkdirs() विधि पर ध्यान दें — यह mkdir() के विपरीत, सभी लापता पैरेंट निर्देशिकाएँ बनाएगा, जो केवल पथ में अंतिम निर्देशिका बनाता है।
फ़ाइलें पढ़ना
Kotlin फ़ाइलों की सामग्री पढ़ने के लिए सुंदर एक्सटेंशन प्रदान करता है। आइए कई तरीकों पर विचार करें:
import java.io.File
fun readExamples() { val file = File("data.txt") // पूरी फ़ाइल को एक स्ट्रिंग में पढ़ना val content: String = file.readText() println("फ़ाइल की सामग्री:$content") // पंक्ति दर पंक्ति पढ़कर सूची में डालना val lines: List<String> = file.readLines() lines.forEach { println("पंक्ति: $it") } // सभी बाइट्स पढ़ना val bytes: ByteArray = file.readBytes() println("फ़ाइल का आकार: ${bytes.size} बाइट्स") // Buffered का उपयोग करके पढ़ना (बड़ी फ़ाइलों के लिए) file.forEachLine { line -> println("पंक्ति प्रोसेस कर रहे हैं: $line") }}बड़ी फ़ाइलों के लिए, पूरी फ़ाइल को मेमोरी में लोड करने से बचने के लिए forEachLine या bufferedReader() का उपयोग करना बेहतर है।
फ़ाइलों में लिखना
फ़ाइल में डेटा लिखना भी सहज है:
import java.io.File
fun writeExamples() { val file = File("output.txt") // स्ट्रिंग लिखना (फ़ाइल को ओवरराइट करता है) file.writeText("नमस्ते, Kotlin!दूसरी पंक्ति") // फ़ाइल के अंत में जोड़ना file.appendText("तीसरी पंक्ति (जोड़ी गई)") // स्ट्रिंग्स की सूची लिखना val lines = listOf("पंक्ति 1", "पंक्ति 2", "पंक्ति 3") file.writeText(lines.joinToString("")) // बाइट्स लिखना val data = byteArrayOf(72, 101, 108, 108, 111) // ASCII में "Hello" file.writeBytes(data)}यदि आपको अधिक नियंत्रण की आवश्यकता है (उदाहरण के लिए, एन्कोडिंग निर्दिष्ट करना), तो bufferedWriter() का उपयोग करें।