我知道之前已经问过这个问题,但我找不到一个似乎是事实上这样做的答案。
我只想列出打包在JAR文件中特定文件夹中的所有资源文件。
JAR文件包含一个名为variants的文件夹,里面是我要列出的未知数量的JSON文件。
最初我试过这个:
File[] files = new File(getClass().getClassLoader().getResource("variants").getPath()).listFiles();
这在Eclipse中运行程序时有效,但在从命令行运行JAR文件时却没有,因为路径返回:
file:/dev-root/target/my-app.jar!/variants
使用this回答我能够让它工作,但它似乎过于复杂,它不是被接受的甚至是最受欢迎的答案。是否有一种直接的方式来实现我想要的目标?
修改
使用this回答我产生了以下内容:
JarFile jar = new JarFile("target/myapp.jar");
Enumeration<JarEntry> entries = jar.entries();
while (entries.hasMoreElements())
{
JarEntry entry = entries.nextElement();
if (!entry.isDirectory() && entry.getName().contains("variants"))
{
// add name to files []
}
}
是否可以使用此技术一次性获取所有文件的列表?
例如。使用像listFiles
这样的东西。