JavaSpringBootResourceLoader遍历jar包中的文件
我使用spring的ResourceLoader遍历jar中的文件。但是我想知道文件的类型(目录或文件)
Resource resource = defaultResourceLoader.getResource(templatePathPrefix + File.separator + templateSourcePath);
File templateSourceFile = null;
try {
//throws java.io.FileNotFoundException:
templateSourceFile = resource.getFile();
} catch (IOException e) {
e.printStackTrace();
throw new IllegalStateException("Cannot find file " + resource, e);
}
if (templateSourceFile.isDirectory()) {
System.out.println("it is directory");
} else {
System.out.println("it is just file");
}
我知道:
resource.getInputStream()
可以获取文件的内容。但我想知道文件的类型
# 1 楼答案
Spring的
ResourceLoader
用于为类路径、文件系统、web等上的资源创建资源处理程序。 它的目的不是遍历jar文件的内容并探测文件与目录我不确定您的最终目标是什么,但对于从
ResourceLoader
加载的单个资源,您可以执行以下操作:这将为您提供文件类型,根据扩展名猜测
遍历Jar条目
为了遍历所有jar条目,您必须在运行时加载jar文件,并执行如下操作:
另一种方法是将jar文件作为Zip打开,并使用ZipEntry探测文件与目录,或者为jar的内容(FileSystems.newFileSystem)创建一个新的文件系统,然后您可以直接使用
Path
和File