使用JAR API打包

来源:互联网 发布:手机淘宝做代理的步骤 编辑:程序博客网 时间:2024/05/17 01:22

前一篇文章有讲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左右字节。但是,都可以用。原因尚不确定。