所以,我相信这个问题已经被问了一百万次了,我已经阅读了几个小时并尝试了一些人给出的几个选项,但没有一个对我有用。
我想列出应用程序 JAR 内目录中的所有文件,因此在 IDE 中可以使用:
File f = new File(this.getClass().getResource("/resources/").getPath());
for(String s : f.list){
System.out.println(s);
}
这给了我目录中的所有文件。
现在,我也试过这个:
InputStream in = this.getClass().getClassLoader().getResourceAsStream("resources/");
InputStreamReader inReader = new InputStreamReader(in);
Scanner scan = new Scanner(inReader);
while (scan.hasNext()) {
String s = scan.next();
System.out.println("read: " + s);
}
System.out.println("END OF LINE");
并从 IDE 打印目录中的所有文件。IDE 外部打印:“END OF LINE”。
现在,我也可以在 Jar 中找到一个条目:
String s = new File(this.getClass().getResource("").getPath()).getParent().replaceAll("(!|file:\\\\)", "");
JarFile jar = new JarFile(s);
JarEntry entry = jar.getJarEntry("resources");
if (entry != null){
System.out.println("EXISTS");
System.out.println(entry.getSize());
}
那是我必须对那个字符串做的一些可怕的编码。
无论如何...我无法获取 Jar 中“资源”目录中的资源列表...我该怎么做?