मैं एक ज़िप फ़ाइल में पहली केंद्रीय निर्देशिका फ़ाइल शीर्षलेख की स्थिति खोजने की कोशिश कर रहा हूं।एक ज़िप फ़ाइल में केंद्रीय निर्देशिका की स्थिति कैसे खोजें?
मैं इन पढ़ रहा हूँ: http://en.wikipedia.org/wiki/Zip_(file_format) http://www.pkware.com/documents/casestudies/APPNOTE.TXT
मैं इसे देखना रूप में, मैं केवल पिन डेटा के माध्यम से स्कैन कर सकते हैं, हैडर अनुभाग की किस तरह मैं पर हूँ द्वारा की पहचान है, और फिर जब तक ऐसा मैंने केंद्रीय निर्देशिका शीर्षलेख मारा। मैं स्पष्ट रूप से उस फ़ाइल हेडर को पढ़ता हूं और वास्तविक डेटा को छोड़ने के लिए "संपीड़ित आकार" का उपयोग करता हूं, और फ़ाइल में प्रत्येक बाइट के माध्यम से फॉर-लूप नहीं ...
यदि मैं ऐसा करता हूं, तो मैं व्यावहारिक रूप से ज़िप फ़ाइल के अंदर पहले से ही सभी फाइलों और फ़ोल्डर्स को जानते हैं, इस मामले में मुझे अब केंद्रीय निर्देशिका के लिए अधिक उपयोग नहीं दिख रहा है।
मेरी समझ के लिएकेंद्रीय निर्देशिका के प्रयोजन फ़ाइल मेटाडाटा, और ज़िप फ़ाइल में वास्तविक डेटा की स्थिति सूची ताकि आप पूरी फ़ाइल को स्कैन करने की जरूरत नहीं होगी है?
केंद्रीय निर्देशिका रिकॉर्ड के अंत के बारे में पढ़ने के बाद, विकिपीडिया का कहना है:
यह आदेश एक ज़िप फ़ाइल एक पास में बनाए जा सकते हैं, लेकिन यह आमतौर पर पहली पर केंद्रीय निर्देशिका पढ़कर decompressed है समाप्त।
मुझे केंद्रीय निर्देशिका रिकॉर्ड का अंत आसानी से कैसे मिलेगा? हमें याद रखना होगा कि इसमें एक मनमानी आकार की टिप्पणी हो सकती है, इसलिए मुझे नहीं पता कि डेटा स्ट्रीम के अंत से कितने बाइट्स स्थित हैं। क्या मैं बस इसे स्कैन करता हूं?
पीएस मैं एक ज़िप फ़ाइल पाठक लिख रहा हूँ।
आप अंत (ज़िप निर्देशिका फ़ाइल के अंत में स्थित है) से पीछे की ओर स्कैनिंग शुरू नहीं कर सकते? –
हां मैं कर सकता हूं, लेकिन क्या यह वास्तव में आपको ऐसा करने का तरीका है?केंद्रीय निर्देशिका के अंत को खोजने के लिए पीछे की ओर स्कैनिंग एक संभावना है, लेकिन इस तथ्य पर विचार करते हुए कि इसमें आकार 16-बिट्स का एक परिवर्तनीय आकार का टिप्पणी क्षेत्र है, तो आपके पास लगभग 65k टिप्पणियां हो सकती हैं जिन्हें आपको पढ़ने/स्कैन करने की आवश्यकता है, और यदि टिप्पणी में जादू स्कैनिंग आपकी स्कैनिंग विफल हो जाएगी। – Tower
टिप्पणियां सबसे अधिक खाली होती हैं और आज 64 के क्या है? –