2010-08-09 21 views
15

का उपयोग किये बिना डॉटनेट फ्रेमवर्क 4.0 का उपयोग करके ज़िप फ़ाइल निकालने के लिए कैसे मैं ठीक हूं। मुझे नेटवर्क स्थान से ज़िप फ़ाइल डाउनलोड करने की आवश्यकता है और फिर इसे स्थानीय मशीन पर डिकंप्रेस करें और फ़ाइलों का उपयोग करें। एकमात्र बाधा यह है कि मैं किसी तीसरे पक्ष के डीएलएल का उपयोग नहीं कर सकता।तृतीय पक्ष dlls

+0

यह इस प्रश्न का डुप्लिकेट जैसा दिखता है: http://stackoverflow.com/questions/836736/unzip-files-programmatically-in-net। आप अधिक उत्तरों के लिए वहां जांचना चाह सकते हैं। – Rich

+2

आप किसी तीसरे पक्ष की लाइब्रेरी का उपयोग क्यों नहीं कर सकते? यह एक बेवकूफ आवश्यकता है ... शायद प्रबंधन में किसी के द्वारा बनाई गई;) –

+0

यह वास्तव में एक बहुत ही महत्वपूर्ण आवश्यकता है क्योंकि ज़िप के लिए .NET Framework समर्थन की कमी एक और डीएल जोड़ने की जटिलता जोड़ती है (और सुरक्षा चिंता तब से सच है जब आप अपने कोड के साथ माइक्रोसॉफ्ट की सावधानी बरतें, यह सबसे ज्यादा बेहतर है) –

उत्तर

10

.NET फ्रेमवर्क 4.5 में अब System.IO.Compression.ZipFile.ExtractToDirectory(String, String) विधि है।

+0

System.IO.Compression;) – tanathos

+0

ओओपीएस, त्वरित लेखन ... मैं इसे सही कर दूंगा :) –

+19

मुझे यह पसंद है कि विशेष रूप से 4.0 समाधान के लिए पूछे जाने वाले प्रश्न और 4.5 उत्तरों का चयन – DontFretBrett

0

एक त्वरित Google खोज ने इसे चालू कर दिया। GZipStream Class MSDN Reference

+5

"... हालांकि, यह कक्षा मूल रूप से .zip अभिलेखागार से फ़ाइलों को जोड़ने या निकालने के लिए कार्यक्षमता प्रदान नहीं करती है ..." –

3

ऐसा करने के लिए कोई "अच्छा" तरीका नहीं है। आप स्पष्ट रूप से ज़िप फ़ाइल संरचना और DeflateStream जैसे वर्गों पर सार्वजनिक रूप से उपलब्ध information का उपयोग करके ज़िप एल्गोरिदम स्वयं को कार्यान्वित कर सकते हैं (हालांकि यह काम नहीं कर सकता है अगर यह DEFLATE एल्गोरिदम का उपयोग करके संपीड़ित नहीं किया गया है)। this blog post में संभावित विकल्पों पर कुछ जानकारी है, लेकिन लघु संस्करण यह है कि आपको या तो किसी तृतीय-पक्ष लाइब्रेरी का उपयोग करना होगा या स्वयं को फिर से लिखना होगा।

यदि यह ऐसी स्थिति है जहां आप एक जीपीएल तरीके से स्रोत कोड जारी करने में सक्षम होंगे, तो आप एक परियोजना से SharpZipLib जैसे कोड को कॉपी-पेस्ट कर सकते हैं, जिससे डीएलएल का उपयोग करने की आवश्यकता को कम किया जा सके। । इसके अलावा, आप तीसरे पक्ष के डीएलएल का उपयोग क्यों नहीं कर सकते?

0

GZipStream का उपयोग आमतौर पर डब्ल्यूसीएफ डेटा संपीड़न के लिए किया जाता है। यहां इसका उपयोग न करें।

आप फ़ाइलों में संपीड़ित करने के लिए इस ज़िप पुस्तकालय की कोशिश कर सकते हैं:

http://www.icsharpcode.net/opensource/sharpziplib/

+2

यह प्रकट नहीं होता है डब्लूसीएफ प्रश्न होने के लिए, और जीजेपीस्ट्रीम ज़िप फ़ाइलों के साथ मदद नहीं करेगा, जो आम तौर पर डेफलेट एल्गोरिदम का उपयोग करते हैं। –

+0

आप मेरी पोस्ट को समझ नहीं पाए। मैंने अन्य दृष्टिकोण का सुझाव दिया ... – Turowicz

+0

SharpZipLib एक यूनिक्स होस्ट सिस्टम द्वारा संपीड़ित फ़ाइलों के साथ विफल हो जाएगा।उदाहरण के लिए जब मैकोज़क्स मशीन पर बनाया गया है, आंतरिक ज़िप कंप्रेसर – Highmastdon

4

मुझे यकीन है कि अगर यह अभी भी VS2010 में उपलब्ध है, नहीं कर रहा हूँ, लेकिन पिछले संस्करणों में J # वी.एस. में शामिल किया गया था और जम्मू # java.util.zip शामिल vjslib.dll में वर्ग, और चूंकि यह वीएस का हिस्सा है, यह तीसरी पार्टी डीएलएल नहीं है, इसलिए आप इसे इस तरह से करने में सक्षम हो सकते हैं।

यहां ऐसा करने के लिए दिखा एक CodeProject लेख है: Zip and Unzip from a C# program using J# runtime

+0

का उपयोग करके दिलचस्प है, मुझे नहीं पता था कि यह वहां था ... –

+0

ध्यान दें कि जे # को अब .NET Framework के साथ नहीं भेजा गया है, हालांकि यह अभी भी VS2005- 2015। यह अभी भी कुछ लोगों के लिए एक वैध समाधान हो सकता है। https://social.msdn.microsoft.com/Forums/office/en-US/627b5ca3-fac7-461f-9e3a-824fd2a5eb32/problem-with-vjslibdll?forum=netfxbcl – ErikusMaximus

2

.NET फ़्रेमवर्क ही नहीं करता है (वर्तमान में) ज़िप फ़ाइलों के लिए सरकारी समर्थन है। कुछ उच्च गुणवत्ता वाले तृतीय-पक्ष मुक्त पुस्तकालय उपलब्ध हैं, और जे # रनटाइम इसका समर्थन करता है, जैसा कि अन्य ने नोट किया है।

मैं तीसरे पक्ष के समाधान की अनुशंसा करता हूं, लेकिन यदि आप बिल्कुल ऐसा नहीं कर सकते हैं, तो एक और चाल है: ZipPackage, जो डब्ल्यूपीएफ का हिस्सा है। यह ज़िप फ़ाइलों का समर्थन करता है (अतिरिक्त मेटाडेटा के साथ बढ़ाया जाता है), और पढ़ने के लिए काफी अच्छी तरह से काम करता है ज़िप फ़ाइलें।

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