Jar包内遍历指定目录里的文件列表

代码

try {
    // resourceDirectory 是classpath或resources里的路径,例如:META-INF
    Enumeration<URL> resources = this.getClass().getClassLoader().getResources(resourceDirectory);
    List<String> resourceList = new ArrayList<>();
    while (resources.hasMoreElements()) {
        URL url = resources.nextElement();
        // 处理单个文件(示例:假设目录下只有文件,无子目录)
        resourceList.add(url.getFile());
        if (url.getProtocol().equals("jar")) {
            // 处理JAR内的资源
            // 解析JAR URL,获取JAR文件路径
            String jarPath = url.getPath().substring(5, url.getPath().indexOf("!"));
            try (JarFile jar = new JarFile(jarPath)) {
                Enumeration<JarEntry> entries = jar.entries();
                while (entries.hasMoreElements()) {
                    JarEntry entry = entries.nextElement();
                    if (entry.getName().startsWith(resourceDirectory)) {
                        System.out.println("jar entry: " + entry.getName());
                    }
                }
            }
        }
    }
} catch (IOException e) {
    throw new RuntimeException(e);
}
posted @ 2025-06-03 11:30  漠孤烟  阅读(28)  评论(0)    收藏  举报