C# (.NET) में ZIP/आर्काइव के साथ कार्य: पूर्ण गाइड

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

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

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

C# (.NET) में ZIP-आर्काइव के साथ कार्य: पूर्ण गाइड

.NET प्लेटफ़ॉर्म पर आधुनिक विकास में, आर्काइव के साथ कार्य करना सामान्य कार्यों में से एक है। चाहे वह लॉग को पैकेज करना हो, कॉन्फ़िगरेशन को अनज़िप करना हो, या बैकअप बनाना हो — अंतर्निहित System.IO.Compression साधन आपको इसे कुशलतापूर्वक और बिना तृतीय-पक्ष लाइब्रेरी के करने की अनुमति देते हैं। इस लेख में, हम C# में ZIP-आर्काइव के साथ मुख्य संचालन को समझेंगे, जिसमें संपीड़न, निष्कर्षण, फ़ाइलें जोड़ना और स्ट्रीम के साथ कार्य शामिल है।



आवश्यक नाम स्थान (Namespaces)

.NET में आर्काइव के साथ कार्य करने के लिए दो मुख्य नाम स्थानों का उपयोग किया जाता है:

using System.IO;using System.IO.Compression;

.NET Framework 4.5 से शुरू करके, ZipFile क्लास System.IO.Compression.FileSystem असेंबली में उपलब्ध है। .NET Core / .NET 5+ में यह मूल लाइब्रेरी का हिस्सा है।



फ़ाइलों से ZIP-आर्काइव बनाना

आर्काइव बनाने का सबसे सरल तरीका स्थैतिक विधि ZipFile.CreateFromDirectory का उपयोग करना है। यह फ़ोल्डर का पथ, आर्काइव का पथ और संपीड़न स्तर स्वीकार करता है।

string sourceFolder = @"C:\\Temp\\Documents";string zipPath = @"C:\\Temp\\backup.zip";

// Optimal संपीड़न के साथ आर्काइव बनाएँZipFile.CreateFromDirectory(sourceFolder, zipPath, CompressionLevel.Optimal, false);

Console.WriteLine($"आर्काइव बनाया गया: {zipPath}");

पैरामीटर:

  • sourceFolder — स्रोत निर्देशिका;
  • zipPath — भविष्य के आर्काइव का पथ;
  • CompressionLevel — Optimal, Fastest या NoCompression;
  • includeBaseDirectory — यदि true है, तो आर्काइव में रूट फ़ोल्डर होगा।


ZIP-आर्काइव को अनज़िप करना

फ़ाइलों का निष्कर्षण ZipFile.ExtractToDirectory विधि द्वारा किया जाता है:

string zipPath = @"C:\\Temp\\backup.zip";string extractPath = @"C:\\Temp\\Restored";

// मौजूदा फ़ाइलों को ओवरराइट करके अनज़िप करेंZipFile.ExtractToDirectory(zipPath, extractPath, overwriteFiles: true);

Console.WriteLine("आर्काइव अनज़िप हो गया।");

.NET 6+ में overwriteFiles पैरामीटर जोड़ा गया है, जो बिना अपवाद के फ़ाइलों को ओवरराइट करने की अनुमति देता है।



मौजूदा आर्काइव में फ़ाइलें जोड़ना

ZipArchive क्लास सामग्री पर पूर्ण नियंत्रण देता है। आइए आर्काइव को अपडेट मोड में खोलें और एक नई फ़ाइल जोड़ें:

string zipPath = @"C:\\Temp\\backup.zip";string newFile = @"C:\\TempewDocument.txt";

using (FileStream zipStream = new FileStream(zipPath, FileMode.Open, FileAccess.ReadWrite))using (ZipArchive archive = new ZipArchive(zipStream, ZipArchiveMode.Update)){ // आर्काइव में एक एंट्री बनाएँ ZipArchiveEntry entry = archive.CreateEntry("newDocument.txt");

using (StreamWriter writer = new StreamWriter(entry.Open())) { writer.Write("यह नई फ़ाइल की सामग्री है।"); }

Console.WriteLine($"फ़ाइल {newFile} आर्काइव में जोड़ी गई।");}

महत्वपूर्ण: ZipArchiveMode.Update का उपयोग करते समय, आर्काइव को पढ़ने और लिखने के लिए खोला जाना चाहिए।



बिना अनज़िप किए आर्काइव की सामग्री पढ़ना

कभी-कभी केवल यह देखना होता है कि अंदर कौन सी फ़ाइलें हैं। इसके लिए हम आर्काइव की एंट्रीज़ को इटरेट करते हैं:

string zipPath = @"C:\\Temp\\backup.zip";

using (FileStream zipStream = new FileStream(zipPath, FileMode.Open, FileAccess.Read))using (ZipArchive archive = new ZipArchive(zipStream, ZipArchiveMode.Read)){ foreach (ZipArchiveEntry entry in archive.Entries) { Console.WriteLine($"फ़ाइल: {entry.FullName}, आकार: {entry.Length} बाइट"); }}

गुण FullName में आर्काइव के अंदर का पथ शामिल है, जिसमें उपफ़ोल्डर भी शामिल हैं।



स्ट्रीम के साथ कार्य: मेमोरी में संपीड़न और निष्कर्षण

उन परिदृश्यों के लिए जहाँ आर्काइव को नेटवर्क पर भेजने या डेटाबेस में सहेजने की आवश्यकता है, MemoryStream का उपयोग करना सुविधाजनक है:<

अनुशंसाएँ