java 动态读取 classpath 下所有的一种资源

有的时候,需要读取所有的 jar 文件中的一种资源。如以下示例读取 META-INF/MANIFEST.MF,可以读取所有 jar 文件中的 META-INF/MANIFEST.MF。

@Test
    public void testAddResources() throws IOException {
        List<InputStream> inputStreams = loadResources("META-INF/MANIFEST.MF", null);
        System.out.println(inputStreams.size());
    }

    public static List<InputStream> loadResources(
            final String name, final ClassLoader classLoader) throws IOException {
        final List<InputStream> list = new ArrayList<InputStream>();
        final Enumeration<URL> systemResources =
                (classLoader == null ? ClassLoader.getSystemClassLoader() : classLoader)
                        .getResources(name);
        while (systemResources.hasMoreElements()) {
            list.add(systemResources.nextElement().openStream());
        }
        return list;
    }

你可能感兴趣的:(java,java,jar,log4j)