Kotlin में ZIP/आर्काइव के साथ कार्य: पूर्ण गाइड

शुरुआती लोगों के लिए ऑनलाइन Python प्रशिक्षक

Python आसानी से सीखें बिना सिद्धांत के बोझ के। स्वचालित जांच के साथ व्यावहारिक कार्य हल करें और ब्राउज़र में सीधे कोड लिखें।

पाठ्यक्रम शुरू करें

Kotlin में ZIP/आर्काइव के साथ कार्य: पूर्ण गाइड



Kotlin (विशेषकर JVM और Android के लिए) में आधुनिक विकास में, अक्सर ZIP-आर्काइव के साथ कार्य करने की आवश्यकता होती है: लॉग को पैकेज करना, संसाधनों को अनज़िप करना, बैकअप बनाना या संपीड़ित रूप में डेटा स्थानांतरित करना। इस लेख में, हम विस्तार से देखेंगे कि Java की अंतर्निहित क्षमताओं (पैकेज java.util.zip) का उपयोग करके Kotlin में ZIP-आर्काइव के साथ कैसे कार्य करें, साथ ही सुविधाजनक एक्सटेंशन और विकल्पों पर भी विचार करेंगे।



Kotlin में आर्काइव के साथ कार्य की आवश्यकता क्यों है?

  • जगह की बचत — डिस्क पर भंडारण करते समय डेटा का संपीड़न।
  • स्थानांतरण में सुविधा — कई फ़ाइलों के बजाय एक आर्काइव।
  • सुरक्षा — एन्क्रिप्शन की संभावना (अतिरिक्त लाइब्रेरी के साथ)।
  • संसाधनों के साथ कार्य — कॉन्फ़िगरेशन या अपडेट को अनज़िप करना।


ZIP के साथ कार्य के लिए मुख्य Java क्लासेज़

Kotlin Java के साथ पूरी तरह से संगत है, इसलिए आर्काइव के साथ कार्य करने के लिए हम java.util.zip से निम्नलिखित क्लासेज़ का उपयोग करते हैं:

  • ZipOutputStream — आर्काइव बनाने के लिए।
  • ZipInputStream — आर्काइव पढ़ने के लिए।
  • ZipEntry — आर्काइव के अंदर एक अलग फ़ाइल/फ़ोल्डर का प्रतिनिधित्व करता है।
  • ZipFile — मौजूदा आर्काइव को पढ़ने के लिए सुविधाजनक क्लास।


उदाहरण 1: Kotlin में ZIP-आर्काइव बनाना

एक आर्काइव बनाएं जिसमें कई फ़ाइलें और फ़ोल्डर हों। प्रदर्शन बढ़ाने के लिए ZipOutputStream और BufferedOutputStream का उपयोग करें।

import java.io.*import java.util.zip.*

fun createZipArchive( filesToZip: List<File>, outputZipPath: String) { ZipOutputStream(BufferedOutputStream(FileOutputStream(outputZipPath))).use { zos -> for (file in filesToZip) { if (file.isDirectory) { // खाली फ़ोल्डर जोड़ें zos.putNextEntry(ZipEntry("${file.name}/")) zos.closeEntry() continue } // फ़ाइल जोड़ें val entry = ZipEntry(file.name) zos.putNextEntry(entry) FileInputStream(file).use { fis -> fis.copyTo(zos) } zos.closeEntry() } } println("आर्काइव बनाया गया: $outputZipPath")}

fun main() { val files = listOf( File("document.txt"), File("image.png"), File("configs") // फ़ोल्डर ) createZipArchive(files, "output.zip")}


उदाहरण 2: ZIP-आर्काइव की सामग्री पढ़ना

आर्काइव के अंदर फ़ाइलों की सूची देखने के लिए ZipFile का उपयोग करना सुविधाजनक है।

import java.util.zip.ZipFile

fun listZipContents(zipPath: String) { ZipFile(zipPath).use { zip -> println("आर्काइव $zipPath की सामग्री:") zip.entries().asSequence().forEach { entry -> val size = if (entry.isDirectory) "फ़ोल्डर" else "${entry.size} बाइट" println("- ${entry.name} ($size)") } }}

fun main() { listZipContents("output.zip")}


उदाहरण 3: ZIP-आर्काइव को अनज़िप करना

आर्काइव से सभी फ़ाइलों को निर्दिष्ट फ़ोल्डर में निकालें। नेस्टेड फ़ोल्डरों की हैंडलिंग पर ध्यान दें।

import java.io.*import java.util.zip.ZipInputStream

fun extractZip( zipPath: String, outputDir: String = "extracted") { val destDir = File(outputDir) destDir.mkdirs()

ZipInputStream(BufferedInputStream(FileInputStream(zipPath))).use { zis -> var entry = zis.nextEntry while (entry != null) { val file = File(destDir, entry.name) if (entry.isDirectory) { file.mkdirs() } else { // पैरेंट फ़ोल्डर बनाएं file.parentFile?.mkdirs() BufferedOutputStream(Fi

अनुशंसाएँ