2010-09-16 5 views
6

मैं ज़िप-फ़ाइल में नवीनतम संशोधन टाइमस्टैंप के रूप में तारीखों को स्टोर करने की कोशिश कर रहा हूं। ऐसा लगता है कि ज़िप प्रारूप समर्थन 1 9 80-01-01 के बाद अंतिम संशोधन समय के रूप में (कम से कम जावा एपीआई java.util.zip.ZipEntry के माध्यम से)ज़िप फ़ाइल प्रारूप में समर्थित सबसे पुराना टाइमस्टैम्प मान क्या है?

क्या यह सही है? वास्तव में 1 9 80-01-01 00:00:00 में सबसे पुराना समर्थित संशोधन टाइमस्टैम्प है? मैंने इसे सत्यापित करने के लिए कुछ संदर्भ खोजने की कोशिश की लेकिन मुझे कोई नहीं मिला।

उत्तर

15

पिन प्रविष्टि timestamps केवल दो 2 से पीछे नहीं परिशुद्धता दर्ज हैं। यह POSZIP बनाया गया था जब उपयोग में DOS टाइमस्टैम्प की सटीकता को दर्शाता है। ज़िप में दर्ज की गई संख्या टाइमस्टैम्प को छोटा कर दिया जाएगा, निकटतम 2 सेकंड नहीं होगा।

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

अंदर ज़िप फ़ाइलें, दिनांक और समय 16 बिट में स्थानीय समय में जमा हो जाती है, न कि यूटीसी के रूप में, पारंपरिक है एक प्राचीन एमएस डॉस प्रारूप का उपयोग कर। बिट 0 कम से कम संकेतक बिट है। प्रारूप छोटा-एंडियन है। 16 बिट में सटीक रूप से समय का सटीक रूप से प्रतिनिधित्व करने के लिए कमरे नहीं था, इसलिए सेकंड फ़ील्ड में दो से विभाजित सेकंड शामिल हैं, जो केवल सेकंड तक सटीकता प्रदान करते हैं।

यह एक ज़िप के अंदर फ़ाइलों के स्पष्ट समय अचानक उनके असम्पीडित समकक्षों हर बार आप एक डेलाइट बचत परिवर्तन के साथ तुलना में एक घंटे से अलग होगा का मतलब है। यह का भी अर्थ है कि एक ज़िप उपयोगिता से एक अलग यूटीसी समय निकालने के लिए गणना के समय पर निर्भर करता है। यह हास्यास्पद है। इन विसंगतियों से बचने के लिए PKZIP प्रारूप को एक आधुनिक यूटीसी-आधारित टाइमस्टैम्प की आवश्यकता है।

मामले को बदतर, स्टैंडर्ड उपकरण WinZip या PKZIP की तरह बनाने के लिए हमेशा दौर अगले दो सेकंड छोटा करने के लिए भी दूसरे जब वे बहाल, जिससे संभवतः फ़ाइल एक सेकंड बनाने के लिए समय होगा। JDK (यानी ZipEntry में javaToDosTime दौर समय नीचे है, जिससे फ़ाइल बनाने एक दो सेकंड पुराने।

प्रारूप दिनांकों का समर्थन नहीं करता पहले 1980/01/01 0:00 यूटीसी। से बचें फ़ाइल दिनांक 1 980-01-01 या पहले (स्थानीय या यूटीसी समय)।

रुको! यह और भी बदतर हो जाता है। फिल कैट्ज़, जब उन्होंने ज़िप प्रारूप को दस्तावेज किया, तो यह निर्दिष्ट करने के लिए परेशान नहीं है कि संग्रह में उपयोग किए गए स्थानीय समय को दिन का प्रकाश या मानक समय होना चाहिए।

और यह बंद सीमित रखने के लिए ... सूचना ज़िप, JSE और TrueZIP डीएसटी अनुसूची लागू (दिनों जहां डीएसटी शुरू किया और किसी भी साल में समाप्त हो गया) किसी भी तारीख के लिए जब सिस्टम का समय और डॉस तारीख के बीच बार परिवर्तित /पहर। यह वैसा ही है जैसा इसे होना चाहिए। विस्टा एक्सप्लोरर, 7-ज़िप और विनज़िप केवल डीएसटी बचत लागू करते हैं, लेकिन शेड्यूल लागू नहीं करते हैं। इसलिए सिस्टम समय और डॉस दिनांक/समय के बीच कनवर्ट करने के समय में किसी भी दिनांक के लिए वर्तमान डीएसटी बचत का उपयोग करें। यह सिर्फ मैला है।

http://mindprod.com/jgloss/zip.html

tar फ़ाइलों तो ज्यादा बेहतर कर रहे हैं।

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