2012-05-17 12 views
9

मेरे पास एक फ़ोल्डर "D:\folder" है और इस फ़ोल्डर में मेरे पास 10 फाइलें हैं जिन्हें मुझे एक नए संग्रह "D:\folder.zip" में ज़िप करने की आवश्यकता है।फ़ोल्डर में सभी फ़ाइलों को ज़िप कैसे करें

वर्तमान में मैं आईसीएसएचआरपीओडी .harpZipLib का उपयोग कर रहा हूं लेकिन यह एक अनिवार्य आवश्यकता नहीं है, इसलिए अन्य समाधान स्वीकार्य हैं।

मुझे जिस समस्या का सामना करना पड़ रहा है वह यह है कि जब मैं विधि FileStream fs = File.OpenRead(@"D:\folder") निष्पादित करने का प्रयास करता हूं तो मुझे निर्दिष्ट पथ तक पहुंच के कारण त्रुटि मिलती है।

मैं इन फ़ाइलों को एक सरल तरीके से कैसे ज़िपित कर सकता हूं?

+0

एक त्वरित Google खोज: http://www.codeproject.com/Articles/37887/C-Zip-Files-and-or- फ़ोल्डर्स - शायद यह आपकी मदद कर सकता है। –

+0

देखें [विशेष फ़ोल्डर के अंदर सभी फ़ाइलों को कैसे पढ़ा जाए] [http://stackoverflow.com/questions/5840443/how-to-read-all-files-inside-particular- फ़ोल्डर)। –

+3

संभावित डुप्लिकेट [सी # में ज़िप फ़ोल्डर] (http://stackoverflow.com/questions/905654/zip-folder-in-c-sharp) –

उत्तर

20

DotNetZip ज्यादा SharpZipLib, फ़ोल्डर में सभी फ़ाइलें ज़िप करने के उदाहरण से उपयोग करने के लिए आसान है:

http://dotnetzip.codeplex.com/wikipage?title=CS-Examples&referringTitle=Examples

+0

हाँ, यह SharpLib की तुलना में उपयोग करने के लिए एक बहुत आसान लाइब्रेरी है, +1 –

+0

धन्यवाद! क्या आप मुझे बता सकते हैं कि इस जिंदफाइल के लिए कौन सी असेंबली की जरूरत है। Ionic.Zip - जहां तक ​​मैं समझता हूं। सही बात? –

+0

असेंबली Ionic.Zip.dll –

13

मैं भी सहमत हूँ:

using (ZipFile zip = new ZipFile()) 
    { 
    zip.AddDirectory(@"MyDocuments\ProjectX", "ProjectX"); 
    zip.Save(zipFileToCreate); 
    } 

यह एक इस पेज से एक उदाहरण है SharpZipLib के बजाय DotNetZip का उपयोग करने के लिए एंटोनियो Bakula के सुझाव।

.NET 4.5 में नए ZipArchive और ZipFile कक्षाएं शामिल हैं। ज़िप फ़ाइलों को मैनिपुलेट करने के लिए। इस समर्थन तुम क्या करने कोशिश कर रहे हैं द्वारा पूरा किया है: एक तरफ नोट के रूप में

ZipFile.CreateFromDirectory(@"D:\Folder", @"Folder.zip"); 

कारण आप त्रुटि मिलती है, क्योंकि आप एक फ़ाइल के बजाय एक निर्देशिका को खोलने की कोशिश कर रहे है। File.OpenRead को पढ़ने के लिए फ़ाइल खोलने के लिए प्रयोग किया जाता है, क्योंकि आप एक निर्देशिका प्रदान करते हैं, आपको त्रुटि मिलती है। यदि आप किसी विशिष्ट फ़ोल्डर के अंदर फ़ाइलों या निर्देशिकाओं को गिनना चाहते हैं तो आप Directory.EnumerateFiles या Directory.EnumerateDirectories का उपयोग कर सकते हैं।

संबंधित मुद्दे