2008-12-17 14 views
26

क्या किसी को भी .NET के लिए एक अच्छी ओपन-सोर्स ज़िपिंग लाइब्रेरी पता है?.NET के लिए ओपन-सोर्स ज़िप लाइब्रेरी?

+0

मई "मैं .net का उपयोग कर जिप अभिलेखागार उत्पन्न करने के लिए की जरूरत है। लेकिन नेट ज़िप संग्रह समर्थन का अभाव है। हम इस मुद्दे को कैसे दूर कर सकते हैं?" Reworded की है। लेकिन चूंकि fx 4.5 यह [System.IO.Compression.ZipArchive] (https://msdn.microsoft.com/en-us/library/system.io.compression.ziparchive (v = vs.110) .aspx के माध्यम से तय किया गया है)। –

उत्तर

35

SharpZipLib

आंतरिक gzip कार्यान्वयन के बारे में टिप्पणी और अन्य पदों के बारे में, वे ही नहीं हैं! GZip संग्रह के लिए आवश्यक शीर्षलेख नहीं बनाता है; यह केवल एक फ़ाइल या स्ट्रीम "ज़िप" के लिए उपयोगी है।

उचित ज़िप अभिलेखागार में एक शीर्षलेख होता है जो सभी संपीड़ित फ़ाइलों को सूचीबद्ध करता है और जहां संकुचित डेटा में वे आते हैं और इसलिए आपको ऐसा कुछ चाहिए जो हेडर बनाता है। इसका अर्थ है शार्पज़िपिल, कई वाणिज्यिक संस्करणों में से एक या .NET बाइंडिंग के साथ बाहरी कुछ का उपयोग करना जैसे 7zip।

बस ऑफचेंस पर कोई यह कहना चाहता है: "लेकिन मैं लिनक्स में .gz फ़ाइलों को हर समय देखता हूं!" - वे सिर्फ एक ही फाइलें हैं और .tar.gz कोई अपवाद नहीं है - tar संग्रह फ़ाइल है। .gz वह संग्रह संपीड़ित है।

+0

आपको इसकी आवश्यकता नहीं है .NET कार्यक्षमता में निर्मित है: gzipstream क्लास देखें। – AnthonyLambert

+0

gzipstream पास ज़िप-कार्यक्षमता के पास कुछ भी नहीं है। –

+0

मुझे लगता है कि आप फ़ाइलों के साथ भी पकड़े गए हैं ... gzip एक सामान्य संपीड़न प्रारूप है। – AnthonyLambert

9

7-zip को देखने का प्रयास करें। यह खुला स्रोत और मेरा एफएवी ज़िप प्रोग्राम है। बहुत क्यूएल बहु कोर का लाभ भी लेता है।

.NET SDK here उपलब्ध है।

+0

दोस्त - 7 ज़िप एक ज़िप प्रोग्राम है। यह भी खुला स्रोत है .. तो इसका मतलब है कि यह .NET सही है? ==> एलजेएमए संपीड़न और डीकंप्रेशन –

+2

+1 के लिए सी # स्रोत कोड, एसडीके भी सार्वजनिक डोमेन है, यह मेरे लिए असली अच्छा लगता है। – Tuminoid

+1

सावधानी का एक शब्द: 7-ज़िप का (सुरक्षित) सी # कार्यान्वयन अप्रबंधित लाइब्रेरी की तुलना में बहुत धीमा है, 10x (निजी इंप्रेशन, अंतर इतना बड़ा था क्योंकि बेंचमार्क नहीं था)। –

9

**** लेकिन लोग .NET पहले से ही खुला स्रोत ज़िप .... ****

http://msdn.microsoft.com/en-us/library/system.io.compression.gzipstream.aspx

यह GZIP पुस्तकालयों के साथ संगत है का समर्थन करता है। मैंने सी # डेटा को संपीड़ित करने और सी ++ एप्लिकेशन में नेटवर्क पर डिकंप्रेस करने के लिए इसका इस्तेमाल किया। ठीक काम करता है।

टोनी

+0

संपीड़न अनुपात 7-ज़िप से कैसे तुलना करता है? –

+0

यह जीजेआईपी के समान है। – AnthonyLambert

+0

system.io.compression नेमस्पेस पूरी तरह से खोला नहीं गया है, उपयोगी सामग्री microsoft.internal नेमस्पेस के अंदर है। System.io.compression में केवल छोटे ज़िप फ़ाइलों को बनाने के लिए उपयोगी भाग है, जैसे कि नई ऑफिस फाइलें, असली ज़िप फ़ाइलें नहीं। –

10

डॉटनैट ज़िप लाइब्रेरी (Ionic.Zip.dll) का उपयोग करना बहुत आसान है। मुझे लगता है कि SharpZip से लागू करना आसान है।

http://www.codeplex.com/DotNetZip

+0

SharpZipLib करता है कि कुछ फ़ाइलों का विस्तार नहीं करता है। –

+0

कौन सी फाइलें विस्तार नहीं करती हैं? – Cheeso

+0

@ सर्गी - हाँ, चेतावनी पर अधिक जानकारी? – mlhDev

-1

आप J # Redist की जाँच कर सकते हैं। यह java.util.zip को फिर से लागू करता है। Article

2

यदि आप 7-zip सी # के साथ चाहते हैं तो here देखें। यह एसओ में एक अन्य पोस्ट में एक सवाल था। यह आपकी मदद कर सकता है।

25

युगल टिप्पणियां।

  1. जे # रनटाइम का उपयोग न करें। जे # को माइक्रोसॉफ्ट द्वारा बंद कर दिया गया है। भविष्य का समर्थन संदिग्ध है। साथ ही, जब भी आप चाहते हैं तो पूरा जे # रनटाइम एक बड़ा अखरोट है जब आप चाहते हैं कि ज़िप समर्थन है।
  2. .NET 2.0 के बाद .NET बेस क्लास लाइब्रेरी का हिस्सा System.IO.Compression में GzipStream, IETF RFC-1952 संपीड़न के लिए एक स्ट्रीम इंटरफ़ेस प्रदान करता है। संपीड़न के लिए यह ठीक है, हालांकि संपीड़न अनुपात इष्टतम नहीं है और यह पहले से संपीड़ित डेटा को विस्तारित करेगा। यह bug was reported to Microsoft, but it's apparently been closed। एक DeflateStream भी है जो समान है, लेकिन RFC 1951 के लिए। एक आम गलतफहमी है कि GZipStream ज़िप फ़ाइलों को करता है। सच नहीं। इनमें से कोई भी ज़िप फ़ाइलों को नहीं करता है।
  3. System.IO.Packaging.ZipPackage है।यह काम करता है, लेकिन मुख्य रूप से एमएस ऑफिस 2007 (.docx, .xslx, और .pptx) फ़ाइलों के पैकेजिंग के लिए डिज़ाइन और इरादा किया गया है। यह ज़िप फ़ाइलों के लिए अनावश्यक है और एन्क्रिप्शन की तरह कई ज़िप सुविधाओं का समर्थन नहीं करता है।
  4. यदि आप .NET में ज़िप फ़ाइलों को बनाने और पढ़ने के लिए एक लचीला तरीका चाहते हैं, तो आपको वर्तमान में एक तृतीय पक्ष लाइब्रेरी की आवश्यकता है।

DotNetZip एक अच्छा तृतीय पक्ष विकल्प है। नि: शुल्क, मुक्त स्रोत, सक्रिय रूप से बनाए रखा, उपयोग करने में आसान, छोटा, अच्छा फीचर सेट। इसे एक असेंबली के रूप में भेज दिया जाता है - यह पूरी तरह से प्रबंधित कोड है। कॉम्पैक्ट फ्रेमवर्क के साथ-साथ नियमित .NET Framework पर भी काम करता है। प्री-रेक .NET 2.0 है।

डॉटनेट जैप में एक ZLIB लाइब्रेरी भी शामिल है, जिसमें {Zlib, GZip, Deflate} स्ट्रीम जैसे वर्ग शामिल हैं। वे .NET में अंतर्निहित लोगों के लिए तुलनीय हैं, लेकिन उनमें संपीड़न स्तर सेट करने की क्षमता शामिल है, और उच्च स्तर पर वे अंतर्निर्मित कक्षाओं की तुलना में अधिक प्रभावी ढंग से संपीड़ित होते हैं। ZlibStream RFC 1950 संपीड़न करता है।

डॉटनेट जैप ज़िप 64, पासवर्ड, एईएस एन्क्रिप्शन, स्ट्रीम, एसएफएक्स, और यूनिकोड करता है। हर कोई जो इसका उपयोग करता है कहता है कि SharpZipLib की तुलना में उपयोग करना बहुत आसान है। एक अच्छी सहायता फ़ाइल (.chm) और कोड कोड के बहुत सारे हैं।

DNZ CHM http://i27.tinypic.com/2nl8fwk.jpg

+0

क्या आप जानते हैं, क्या डॉटनेटजिप को ओपन सोर्स प्रोजेक्ट में शामिल किया जा सकता है? मैंने सुना है कि माइक्रोसॉफ्ट पब्लिक लाइसेंस का इस्तेमाल जीपीएल के साथ नहीं किया जा सकता है। – Zenya

+0

सबसे पहले, मैं एक आईपी वकील या सॉफ्टवेयर लाइसेंस और उनके पारस्परिक अनुकूलता पर एक विशेषज्ञ नहीं हूं। हालांकि, मुझे पूरा भरोसा है कि मैं आपके पहले प्रश्न का उत्तर दे सकता हूं: डॉटनेटजिप का उपयोग ओपन सोर्स प्रोजेक्ट में किया जा सकता है। आपकी टिप्पणी में एक दूसरा, निहित प्रश्न है: क्या एमएस-पीएल के तहत लाइसेंस प्राप्त लाइब्रेरी को कोड या लाइब्रेरी के साथ जीपीएल के तहत लाइसेंस प्राप्त किया जा सकता है? यह पूरी तरह से एक अलग सवाल है, और मैं इसका जवाब देने का प्रयास नहीं करूंगा। मुझे यकीन नहीं है, लेकिन आपके हिस्से पर एक धारणा हो सकती है कि "ओपन सोर्स जीपीएल का तात्पर्य है"। यह मान्य धारणा नहीं है। – Cheeso

+0

ग्रेट लाइब्रेरी, धन्यवाद! – nrodic

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