كيف يمكنني اكتشاف الموارد في جافا جرة مع البدل الاسم ؟
سؤال
أريد أن اكتشاف جميع ملفات xml التي بلدي ClassLoader على علم باستخدام نمط بدل.هل هناك أي طريقة للقيام بذلك ؟
المحلول
أنه يتطلب القليل من الخداع ، ولكن هنا ذات الصلة بلوق الدخول.عليك أولا معرفة عناوين الجرار ، ثم فتح جرة مسح محتوياته.أعتقد أنك سوف تكتشف عناوين url من كل الجرار التي تبحث عن `/META-INF/MANIFEST.MF'.الدلائل سيكون مسألة أخرى.
نصائح أخرى
الربيع ApplicationContext
يمكن أن تفعل هذا بشكل مسلي:
ApplicationContext context = new ClassPathXmlApplicationContext("applicationConext.xml");
Resource[] xmlResources = context.getResources("classpath:/**/*.xml");
انظر ResourcePatternResolver#getResources, أو ApplicationContext.
List<URL> resources = CPScanner.scanResources(new PackageNameFilter("net.sf.corn.cps.sample"), new ResourceNameFilter("A*.xml"));
وضع قصاصة في pom.xml
<dependency>
<groupId>net.sf.corn</groupId>
<artifactId>corn-cps</artifactId>
<version>1.0.1</version>
</dependency>
جرة ملف آخر مضغوط الملف ، أليس كذلك ؟
لذلك أنا افترض أنك يمكن تكرار جرة-الملفات باستخدام http://java.sun.com/javase/6/docs/api/java/util/zip/ZipInputStream.html
أنا أفكر في شيء ما مثل:
ZipSearcher searcher = new ZipSearcher(new ZipInputStream(new FileInputStream("my.jar")));
List xmlFilenames = searcher.search(new RegexFilenameFilter(".xml$"));
الهتافات.كيث.
حسنا, هو ليس من ضمن جافا ، ولكن
jar -tvf jarname | grep xml$
سوف تظهر لك جميع XMLs في جرة.