كيف يمكنني اكتشاف الموارد في جافا جرة مع البدل الاسم ؟

StackOverflow https://stackoverflow.com/questions/133229

  •  02-07-2019
  •  | 
  •  

سؤال

أريد أن اكتشاف جميع ملفات 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 في جرة.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top