2011-03-14 10 views
13

मान लें फ़ाइल नाम इस URL में है:जेएआर फ़ाइल के अस्तित्व और जार के अंदर एक विशिष्ट फाइल कैसे जांचें?

URL file = new URL("jar:file:/path/to/foo.jar!/META-INF/file.txt"); 

इस आपरेशन IOException की ओर जाता है, तो कोई foo.jar या वहाँ मौजूदा जार के अंदर कोई file.txt है:

import org.apache.commons.io.FileUtils; 
FileUtils.copyURLToFile(file, /* some other file */); 

यह मान्य करने के लिए संभव है अपवाद के बिना फाइल अस्तित्व?

उत्तर

11

आप java.util.jar.JarFile class का उपयोग कर सकते हैं, और फ़ाइल देखने के लिए getJarEntry विधि का उपयोग कर सकते हैं।

JarFile jar = new JarFile("foo.jar"); 
JarEntry entry = jar.getJarEntry("META-INF/file.txt"); 
if (entry != null) { 
    // META-INF/file.txt exists in foo.jar 
} 
0

आप क्लास्स्पैट की जांच कर सकते हैं और जार की खोज कर सकते हैं। फिर आप अपने आप को जार का निरीक्षण कर सकते हैं। मुझे लगता है कि यह आपके रास्ते से तेज़ नहीं होगा, न ही यह समझना अधिक आसान होगा, तो आप अपवाद से क्यों बचना चाहते हैं?

मुझे अपवाद का उपयोग करने में कुछ गलत नहीं दिख रहा है।

+0

अपवादों के बहुत सारे कारण हैं। 'Java.io.IOException' को पकड़ने से प्रत्येक I/O समस्या को JAR में 'file.txt' अनुपस्थिति के सिग्नल में परिवर्तित कर दिया जाएगा। उचित निर्णय नहीं, हुह? – yegor256

+0

हां, मैं सहमत हूं कि यदि आप जार में file.txt की अनुपस्थिति को संभालने में सक्षम हैं, और अन्य जार-समस्याएं अलग-अलग हैं, तो यह एक फर्क पड़ता है। –

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