代码
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);
}