2012-12-12 14 views
16

ज़िप प्रविष्टियां प्रविष्टि का पूरा पथ नाम संग्रहीत करती हैं क्योंकि (मुझे अगले भाग का यकीन है) ज़िप संग्रह निर्देशिकाओं के रूप में व्यवस्थित नहीं है। मेटाडाटा में जानकारी है कि फ़ाइलों को कैसे संग्रहीत किया जाना चाहिए (निर्देशिकाओं के अंदर)।ZipEntry के पथ नाम के फ़ाइल विभाजक?

यदि मैं विंडोज में एक ज़िप फ़ाइल बनाता हूं, जब मैं किसी अन्य ओएस में डेटा को अनजिप करता हूं, उदा। मैक ओएस एक्स, फाइल संरचना बनी हुई है क्योंकि यह विंडोज़ में होती थी। क्या ऐसा इसलिए है क्योंकि अनजिपर को इसे संभालने के लिए डिज़ाइन किया गया है, या आईएसआईटी है क्योंकि ज़िप के अंदर फ़ाइल विभाजक मानक हैं?

मैं यह पूछ रहा हूं क्योंकि मैं ज़िप फ़ाइल के नाम का उपयोग करके ज़िप फ़ाइल के अंदर एक प्रविष्टि ढूंढने की कोशिश कर रहा हूं। लेकिन विंडोज़ के अलावा अन्य सिस्टम में इसे बनाने के लिए मुझे किस फाइल सेपरेटर का उपयोग करना चाहिए?

मैं जावा का उपयोग कर रहा हूं, और ZipEntry के .getName() मुझे विंडोज फ़ाइल विभाजक \ का उपयोग करके पथ देता है। क्या यह पर्याप्त होगा यदि मैं जावा File.separator विभाजक का उपयोग किसी अन्य ओएस पर काम करने के लिए करता हूं? या क्या मुझे अपनी फ़ाइल को प्रत्येक संभावित विभाजक के साथ ढूंढने की कोशिश करनी होगी?

+0

तो जब आप अनजिप करते हैं तो आप फ़ाइल को पूर्ण पथ से अनजिप नहीं करना चाहते हैं? – vels4j

+0

नहीं, समस्या यह है कि, जब मैं फ़ाइल की खोज करता हूं, तो इसे अपने काम में फ़ाइल विभाजक कैसे सेट कर सकते हैं ताकि इसे काम करने के लिए कोई फर्क नहीं पड़ता कि व्हायर ओएस मेरे आवेदन के लिए प्लेटफार्म है ... – Ordiel

उत्तर

11

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

कुछ एप्लिकेशन, विशेष रूप से कस्टम ज़िप निर्माण कोड, अलग-अलग ज़िप प्रविष्टियों पर विभाजक मिश्रण कर सकते हैं, इसलिए प्रत्येक प्रविष्टि को देखना न भूलें।

5

.zip file specification कहता है:

4.4.17.1 फ़ाइल का नाम, वैकल्पिक रिश्तेदार पथ के साथ। संग्रहीत पथ में ड्राइव या डिवाइस अक्षर, या एक प्रमुख स्लैश नहीं होना चाहिए। सभी स्लेश अमीगा और यूनिक्स फ़ाइल सिस्टम इत्यादि के साथ संगतता के लिए पीछे की ओर स्लैश '\' के विपरीत स्लैश '/' होना चाहिए। यदि इनपुट मानक इनपुट से आया है, तो फ़ाइल नाम फ़ील्ड नहीं है।

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