为了账号安全,请及时绑定邮箱和手机立即绑定

如何列出JAR文件中的文件?

如何列出JAR文件中的文件?

绝地无双 2019-06-15 13:36:47
如何列出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... */}

注意,在Java 7中,您可以创建一个FileSystem从JAR(Zip)文件,然后使用NIO的目录遍历和过滤机制来搜索它。这将使编写处理JAR和“爆炸”目录的代码变得更容易。


查看完整回答
反对 回复 2019-06-15
  • 3 回答
  • 0 关注
  • 486 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号