2012-04-18 46 views
5

ज़िप के आरएफसी को गुगल, विकृत और पढ़ना है, लेकिन ज़िप में उपयोग किए जाने वाले सटीक एल्गोरिदम के बारे में कोई जानकारी नहीं मिल सकती है।मानक ज़िप में कौन सा एल्गोरिदम उपयोग कर रहा है?

मैं ज़िप के बारे में जानकारी मिल गया है == टीएआर + GZIP

लेकिन, मैं इस जानकारी से उलझन में हूँ।

के रूप में मुझे याद है और टीएआर LZMA का उपयोग करता है, और मैं कल्पना नहीं कर सकते == टीएआर + GZIP (LZMA + LZW - ???) कैसे ज़िप हो सकता है क्योंकि GZIP LZW एल्गोरिथ्म का उपयोग करता

तो तुम मदद कर सकता है हो सकता है ज़िप के एल्गोरिदम खोजने के साथ, मैं इसे कार्यान्वित करना चाहता हूं।

+1

ज़िप कई एल्गोरिदम का उपयोग कर सकते हैं। वेब पर कहीं भी एक स्पेस बिछा रहा है ... –

+1

आह, [यहां यह है] (http://www.pkware.com/documents/casestudies/APPNOTE.TXT): Deflate, Deflate64, Implode, BZIP2, LZMA, या पीपीएमडी +। –

उत्तर

7

ज़िप क्षमताओं लगभग gzip के साथ tar के संयोजन के बराबर प्रदान करता है।

टैर केवल एक ही फाइल में कई फाइलें एकत्र करता है, मूल फ़ाइलों (जैसे पथ, तिथियां) के बारे में जानकारी को संरक्षित करता है। प्रश्न में बयान के विपरीत, यह कोई संपीड़न स्वयं ही करता है। gzip बस एक फ़ाइल लेता है और इसे संपीड़ित करता है।

ज़िप दोनों उन दोनों करता है - यानी, यह कई घटक फ़ाइलों को एक संग्रह में संग्रहीत करता है (फिर, पथ, तिथियां इत्यादि जैसी चीज़ों को संरक्षित करता है), और उन्हें संपीड़ित करता है। Tar + gzip के विपरीत, यह प्रत्येक फ़ाइल को व्यक्तिगत रूप से संपीड़ित करता है, और घटक फ़ाइलों के बारे में "निर्देशिका" जानकारी को संपीड़ित करता है। यह संग्रह (सम्मिलित, हटाएं, डिकंप्रेस इत्यादि) में अलग-अलग फ़ाइलों के साथ काम करना आसान बनाता है लेकिन इसका मतलब यह भी है कि यह आमतौर पर संपीड़न के समग्र रूप से अच्छा नहीं होगा।

ज़िप के संपीड़न एल्गोरिदम को फिर से कार्यान्वित करने के बजाय, आप zlib web site से कोड (अत्यंत पोर्टेबल, बहुत उदार लाइसेंस) डाउनलोड करने से लगभग निश्चित रूप से बेहतर हैं। ज़्लिब वेबसाइट में एल्गोरिदम के काफी उचित explanation हैं। यदि आप वास्तव में ऐसा करने पर जोर देते हैं, तो आप शायद आरएफसी 1 9 50, 1 9 51 और 1 9 52 को भी देखना चाहते हैं।

+1

यह भी है [विकिपीडिया] (http://en.wikipedia.org/wiki/Tar_ (file_format) #Naming_of_compressed_tar_files) कहते हैं। – fb55

+1

ध्यान दें कि zlib केवल संपीड़न/डिकंप्रेशन लागू करता है, संग्रह तंत्र नहीं। –

+1

@ हॉटिक्स: दाएं - अगर आप संग्रह भाग के लिए कोड चाहते हैं, तो यह [इन्फो-ज़िप वेब साइट] (http://www.info-zip.org) पर है। –

1

इस संदर्भ में "ज़िप" एक फ़ाइल प्रारूप है जो कई अलग संपीड़न विधियों को अनुमति देता है। उनमें डिफ्लेट, डिफ्लेट 64, बीजीआईपी 2, एलजीएमए, वेवैक, और पीपीएमडी शामिल हैं। अभ्यास में हालांकि, आप हमेशा अनुकूलता के लिए, ज़िप फ़ाइलों में विशेष रूप से उपयोग किए गए डिफ्लेट को देखेंगे।

डिफ्लेट भी gzip और zlib द्वारा उपयोग की जाने वाली संपीड़न विधि है, साथ ही साथ पीएनजी छवि प्रारूप द्वारा भी।

डिफ्लेट LZ77 कंप्रेसर है, LZ78 नहीं।

टैर एक संग्रहक है, कंप्रेसर नहीं। यह .tar फ़ाइल प्रारूप का उत्पादन करता है। .tar फ़ाइल आमतौर पर संपीड़ित होती है (आसानी से टैर प्रोग्राम स्वयं बाहरी कार्यक्रमों को बुलाती है) जो एक प्रत्यय जोड़ती है, उदा। gzip संपीड़न के लिए .tar.gz। टैर विकल्पों में gzip के लिए -z, -j bzip2 (.bz2) के लिए, और-lz lzma (.xz) के लिए शामिल है।

आपको डिफ्लेट के लिए एल्गोरिदम लागू करने की आवश्यकता नहीं है। यह आपके लिए किया गया है। आप अपने कोड में zlib का उपयोग कर सकते हैं, जिसमें एक बहुत उदार लाइसेंस है।