यह सबसे सरल वाट फ़ाइल वस्तु जो करने के लिए एक निश्चित यूआरएल ऑब्जेक्ट पर इंगित कर रहा है पाने के लिए है
- में सभी संसाधनों की खोज मेटा-आईएनएफ "निर्देशिका":
आप इंडी एड
Enumeration<URL> en=getClass().getClassLoader().getResources("META-INF");
if (en.hasMoreElements()) {
URL metaInf=en.nextElement();
File fileMetaInf=new File(metaInf.toURI());
File[] files=fileMetaInf.listFiles();
//or
String[] filenames=fileMetaInf.list();
}
- सभी bla नामित संसाधनों को इस URL पर फ़ाइल वस्तु की ओर इशारा करते मिलता है।एक्सएमएल (recursivly)
इस मामले में, आप कुछ कस्टम कोड करना होगा।
final List<File> foundFiles=new ArrayList<File>();
FileFilter customFilter=new FileFilter() {
@Override
public boolean accept(File pathname) {
if(pathname.isDirectory()) {
pathname.listFiles(this);
}
if(pathname.getName().endsWith("bla.xml")) {
foundFiles.add(pathname);
return true;
}
return false;
}
};
//rootFolder here represents a File Object pointing the root forlder of your search
rootFolder.listFiles(customFilter);
जब कोड चलता है, आप foundFiles
सूची बिल्कुल पाया आवृत्तियों मिल जाएगा: यहाँ एक डमी उदाहरण है।
Enumeration<URL> en = getClass().getClassLoader().getResources(
"META-INF");
List<String> profiles = new ArrayList<>();
if (en.hasMoreElements()) {
URL url = en.nextElement();
JarURLConnection urlcon = (JarURLConnection) (url.openConnection());
try (JarFile jar = urlcon.getJarFile();) {
Enumeration<JarEntry> entries = jar.entries();
while (entries.hasMoreElements()) {
String entry = entries.nextElement().getName();
System.out.println(entry);
}
}
}
स्रोत
2011-03-04 13:03:54
@Andrew, चौखटे की एक बहुत कुछ के लिए पुनरावृति कुछ प्रक्रियाओं को स्वचालित करने के लिए अभिलेखागार में नाम या एक्सटेंशन के आधार पर कुछ फ़ाइलें, जैसे स्ट्रिप के एक्शनबीन्स ढूंढना, या hibm.xml फ़ाइलों को हाइबरनेट के लिए। – bestsss
देखें http://stackoverflow.com/questions/1429172/how-do-i-list-the-files-inside-a-jar-file/ – Vadzim
रेज़न क्यों आपको भ्रमित करता है कि getResources क्लास लोडर पर काम करता है जो कक्षा में कई JAR हो सकता है। तो यदि आपके पास एक ही संसाधन के साथ कई JARs हैं, तो आप सभी को प्राप्त करें। हालांकि यह निर्देशिकाओं के अंदर खोजना नहीं है। GetResources ("मेटा-आईएनएफ") के साथ आपको सीएल के खोज पथ में सभी मेटा-आईएनएफओ निर्देशिकाएं मिलती हैं और यदि सीएल एक सिंगल जार फ़ाइल क्लास लोडर है, तो आपको सबसे ज्यादा एक प्रविष्टि मिलती है। – eckes