2010-11-18 13 views
5

नहीं देखती है मैं डिजिटल दस्तावेज़ों और डिजिटल हस्ताक्षरों पर काम कर रहा हूं और मैंने एक समस्या पर ठोकर खाई है।जावा ZipFile प्रविष्टियां() विधि निर्देशिका

इनपुट: documentX.adoc - फ़ाइलों और फ़ोल्डर्स के साथ ज़िप फ़ाइल।

मुझे इनपुट फ़ाइल में सभी सामग्री प्राप्त करने की आवश्यकता है - डीआईआर और फाइलों की एक सूची।

मैं क्या है: - कुछ भी नहीं अभी भी

ZipFile adocFile = new ZipFile(documentXFileName); 
ArrayList <String> adocFiles = new ArrayList<String>(); 
Enumeration <? extends ZipEntry> entries; 
entries = adocFile.entries(); 
for (entries = adocFile.entries(); entries.hasMoreElements();) 
{ 
    adocFiles.add(entries.nextElement().getName()); 
} 

मैं ArrayList < ZipEntry बनाने के लिए> और नाम के बजाय ZipEntries जोड़ने की कोशिश की है। शायद कुछ और रास्ता है? अजीब बात है, ZipEntry एक .isDirectory() विधि ...

मदद के लिए धन्यवाद, है कि मार्टिन

+0

क्या आपने यह सुनिश्चित करने के लिए ज़िप फ़ाइल की जांच की है कि निर्देशिका वास्तव में इसमें बनाई गई है? – Powerlord

+0

आपका कोड मेरे लिए ठीक दिखता है। शायद कुछ बाहरी ज़िप उपकरण में ज़िप फ़ाइल (दिए गए फ़ाइल नाम के आधार पर) खोलें और केवल दोबारा जांचें कि फ़ाइल में प्रविष्टियां हैं? यदि यह काम करता है, तो यह एक प्रारूप के साथ एक मुद्दा हो सकता है कि जावा कार्यान्वयन का समर्थन नहीं करता है, लेकिन मुझे वास्तव में पता नहीं है ... –

+0

हां, निर्देशिकाएं हैं। मैं ज़िप फ़ाइल (सुदूर प्रबंधक के साथ) ब्राउज़ कर सकता हूं, मैं सभी डीआईआर देखता हूं और मैं इसे भी डीआईआर देखने के लिए निकाल सकता हूं। – Brutus

उत्तर

8

documentation से:

एक निर्देशिका प्रविष्टि परिभाषित किया गया है होना करने के लिए एक जिसका नाम एक '/' के साथ समाप्त होता है।

निर्देशिका में ज़िप फ़ाइल में स्टोर करना आवश्यक नहीं है - वे वैकल्पिक प्रविष्टियां हैं। foo नामक प्रविष्टि के बिना पथ foo/bar.txt पथ के साथ बाइट अनुक्रम को स्टोर करना संभव है। ज़िप उपकरण भ्रम प्रदान कर सकते हैं कि ऐसी चीजें संग्रह में मौजूद हैं, भले ही वे नहीं करते हैं।

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