gpt4 book ai didi

java - spring boot ResourceLoader遍历jar包中的文件

转载 作者:行者123 更新时间:2023-12-02 02:17:17 24 4
gpt4 key购买 nike

我使用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() 

可以获取文件的内容。但我想知道文件的类型。

最佳答案

Spring 的 ResourceLoader 用于为类路径、文件系统、Web 等上的资源创建资源处理程序。它的目的不是遍历 jar 文件的内容并探测文件与目录。

我不确定您的最终目标是什么,但是对于从 ResourceLoader 加载的单个资源,您可以执行以下操作:

String filename = resource.getFilename();
String type = URLConnection.guessContentTypeFromName(resource.getFilename());

这将为您提供从扩展名猜测的文件类型。

遍历 Jar 条目

为了遍历所有 jar 条目,您必须在运行时加载 jar 文件并执行以下操作:

    //String or File handler to JAR file
JarFile jar = new JarFile(file);
Enumeration<JarEntry> entries = jar.entries();

while (entries.hasMoreElements()) {
JarEntry jarEntry = entries.nextElement();
System.out.println(jarEntry.getName() + ": " + jarEntry.isDirectory());
}

jar.close();

另一种方法是将 jar 文件作为 Zip 打开并使用 ZipEntry探测文件与目录,或者为 Jar 的内容 ( FileSystems.newFileSystem ) 创建新的文件系统,然后您可以直接使用 PathFile

关于java - spring boot ResourceLoader遍历jar包中的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49128451/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com