java列出jar包中resource中的目录
时间: 2023-06-24 18:08:16 浏览: 45
可以使用以下代码列出 JAR 包中 resource 目录的内容:
```java
import java.io.IOException;
import java.net.URISyntaxException;
import java.nio.file.*;
import java.util.*;
public class ListResourceDirectory {
public static void main(String[] args) throws IOException, URISyntaxException {
// 获取当前类的 ClassLoader
ClassLoader classLoader = ListResourceDirectory.class.getClassLoader();
// 获取 resource 目录下的文件路径
String resourcePath = ListResourceDirectory.class.getResource("/").toURI().getPath();
// 获取 resource 目录下的所有文件
List<String> resourceList = new ArrayList<>();
try (DirectoryStream<Path> stream = Files.newDirectoryStream(Paths.get(resourcePath))) {
for (Path path : stream) {
resourceList.add(path.toString());
}
}
// 列出 JAR 包中 resource 目录下的文件
for (String resource : resourceList) {
if (resource.startsWith(resourcePath)) {
String jarEntryName = resource.substring(resourcePath.length());
if (jarEntryName.startsWith("/")) {
jarEntryName = jarEntryName.substring(1);
}
if (jarEntryName.contains("/")) {
// 是目录,列出目录下的文件
System.out.println(jarEntryName + "/");
try (DirectoryStream<Path> stream = Files.newDirectoryStream(classLoader.getResource(jarEntryName).getPath())) {
for (Path path : stream) {
System.out.println(" " + path.getFileName());
}
}
} else {
// 是文件,直接输出文件名
System.out.println(jarEntryName);
}
}
}
}
}
```
该代码的思路是先获取 ClassLoader 和 resource 目录下的文件路径,然后获取 resource 目录下的所有文件列表,最后根据文件路径判断是在 JAR 包中还是在文件系统中,并输出文件名或者目录名下的文件列表。