使用JAR API打包

前一篇文章有讲JAR的解析。流程很简单,创建JAR文件,用这个文件构建JarFile,然后,从JarFile中得到JarEntry的枚举,这样,就可以遍历JarEntry,而得到字节流的方法也很简答,JarFile提供了根据JarEntry获取字节流的方法。

 

JarEntry枚举时,会将JarFile中所有的文件列出来,其路径为相对路径。例如:com/huayu/mtk/Gpio.class

 

打包的过程是逆向的;JarOutputStream提供了putnextEntry、closeEntry、write方法。

 

Entry的名称,很显然,是相对路径名。不可能是绝对路径名,也不可能是文件名(否则,Jar怎么知道你要写在哪里!)

 

生成Jar文件时,是不需要构建JarFile的(JarFile没有提供相关的API)。直接构建FileOutputStream和JarOutputStream就够了。

 

疑问在于:我需要为每个文件建立一个Entry,还是需要为每一个目录和文件建立一个Entry。

 

经过测试,Jar采用的是在生成Jar文件时为每个目录和文件建立一个Entry的方式;这就有点像我们在创建文件时,如果这个文件所在的目录不存在,就需要先建立目录一样。当然,Jar如果采用另一种方式,我认为也是合理的。

 

在网上拷贝了一段代码,原来的代码有一个BUG,改了 一下,测试OK;

 

 

 

另外,发现我生成的JAR比Eclipseme生成的JAR文件大1K左右字节。但是,都可以用。原因尚不确定。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值