对于jar中文件的读取

前言

  • 今天在写项目的时候碰到了File类无法解析jar内xml的头疼问题,然后也是一番百度,终于找到原因:jar内文件的目录结构对于file的解析来说,其实只是一个文件,file类可不认识jar内的目录结构
  • 哎~,既然file解析不了jar,总有别的啥能解析吧,jar既然和java有关系,那java是不是也提供了一套行之有效的解决方案呢?
  • 照着这个思维模式我果断去查找了api文档…
  • 酱酱酱酱酱酱~
  • ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
  • 在这里插入图片描述
  • 这里我就不多哔哔了,想了解的小伙伴自己去看api,我就简单的说一下(基本是废话),没有的可以api小伙伴们可以自己去找资源下载(小心病毒,途径正规就好),当然也可以在评论留言邮箱,私信什么的,可以发给你们(* ̄︶ ̄)~

JarFile

  • 这个类主要干嘛的的呢?
  • 正所谓万物皆对象,jarFile,看名字,不用我多说,这个小家伙说的直白一些就是用来读取jar文件内容的。话不多说,直接看方法。
  1. 构造方法
    在这里插入图片描述
  • jarFile支持多种形式的创建,看着是不是有点眼熟,和File类的机制还挺像,就是多了一个验证verify,这个学过证书安全类知识的小伙伴们应该清楚,不明白的小伙伴还请百度,我就不做详细说明了。
  1. 方法摘要
    在这里插入图片描述
  • 对于这个ZipEntry类嘛~
  • 先说一下ZipFile类其实是JarFile类的父类,嗯对是他爹,其实我们知道,JAR 文件格式是以流行的 ZIP 文件格式为基础。所以这里的继承体系也显得顺理成章。
    在这里插入图片描述
  • 所以举一反三,ZipEntry的儿子嘛,当然就是JarEntry啦~
    在这里插入图片描述
  • 至于这个Entry类其实就是就是对应解析好了的jar文件对象,可以通过这个类获取jar文件中的一些细节
  • 咳咳回到方法上来,这里主要介绍一下getInputStream(ZipEntry ze)和getJarEntry(String name) 这两个方法

InputStream getInputStream(ZipEntry ze)

  • jarFile提供了jar内文件输入流的获取方式,返回的是一个InputStream
    在这里插入图片描述
  • 有了这个输入流可以配合一些第三方库用于解决jar中的文件读取问题
  • 刚刚也说了继承体系,传入的参数自然也可以是JarEntry

JarEntry getJarEntry(String name)

  • jarFile提供了通过指定条目名获取JarEntry的方式,如果解析成功会返回一个JarEntry对象,如果没找到会返回null。
    在这里插入图片描述

其他

  • 本来还想说一些其他的东西,但是感觉api里面说的比较详细了,这里就简单的列举一下吧。
  • 相关的除了JarEntry、JarFile,一个负责对解析后的jar文件进行操作,一个负责解析jar文件。
  • 还有他爹,对应的是ZipEntry,ZipFile,也是类似的,换成zip就是了。
  • 对于JarEntry内部的一些相关的还有CodeSigner负责保存签名者信息、Certificate、Attributes,有兴趣的小伙伴们可以去研究一下。
  • 先就这样吧,有空在把剩下的补完(持续划水ing)。
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值