如何列出JAR文件中的文件?我有这样的代码,它从一个目录中读取所有文件。 File textFolder = new File("text_directory");
File [] texFiles = textFolder.listFiles( new FileFilter() {
public boolean accept( File file ) {
return file.getName().endsWith(".txt");
}
});效果很好。它用所有以“.txt”结尾的目录“text_目录”结尾的文件填充数组。如何以类似的方式读取目录的内容?内一个罐子文件?所以我真正想做的是列出JAR文件中的所有图像,这样我就可以用:ImageIO.read(this.getClass().getResource("CompanyLogo.png"));(这是因为“CompanyLogo”是“硬编码”的,但是JAR文件中的图像数量可能是10到200个可变长度。)编辑所以我想我的主要问题是:如何知道JAR文件的名称我的主要班级住在哪里?我可以用java.util.Zip.我的结构是这样的:它们就像:my.jar!/Main.classmy.jar!/Aux.classmy.jar!/Other.classmy.jar!/images/image01.png
my.jar!/images/image02a.png
my.jar!/images/imwge034.png
my.jar!/images/imagAe01q.png
my.jar!/META-INF/manifest例如,现在我可以使用以下方法加载“图像/图像01.png”: ImageIO.read(this.getClass().getResource("images/image01.png));但是仅仅因为我知道文件名,剩下的部分我必须动态加载它们。
3 回答

慕盖茨4494581
TA贡献1850条经验 获得超11个赞
CodeSource src = MyClass.class.getProtectionDomain().getCodeSource();if (src != null) { URL jar = src.getLocation(); ZipInputStream zip = new ZipInputStream(jar.openStream()); while(true) { ZipEntry e = zip.getNextEntry(); if (e == null) break; String name = e.getName(); if (name.startsWith("path/to/your/dir/")) { /* Do something with this entry. */ ... } }} else { /* Fail... */}
FileSystem
添加回答
举报
0/150
提交
取消