java zip压缩算法_Java压缩技术(三) ZIP解压缩——Java原生实现

原文:http://snowolf.iteye.com/blog/642492JavaEye的朋友跟我说:“你一口气把ZIP压缩和解压缩都写到一个帖子里,我看起来很累,不如分开好阅读”。ok,面向读者需求,我做调整,这里单说ZIP解压缩!解压缩与压缩运作方式相反,原理大抵相同,由ZipInputStream通过read方法对数据解压,同时需要通过CheckedInputStream设置冗余校验码,...
摘要由CSDN通过智能技术生成

原文:http://snowolf.iteye.com/blog/642492

JavaEye的朋友跟我说:“你一口气把ZIP压缩和解压缩都写到一个帖子里,我看起来很累,不如分开好阅读”。ok,面向读者需求,我做调整,这里单说ZIP解压缩!

解压缩与压缩运作方式相反,原理大抵相同,由ZipInputStream通过read方法对数据解压,同时需要通过CheckedInputStream设置冗余校验码,如:

Java代码  0fd15f644694a335690493798a0b6d72.png

CheckedInputStream cis = new CheckedInputStream(new FileInputStream(

srcFile), new CRC32());

ZipInputStream zis = new ZipInputStream(cis);

需要注意的是,在构建解压文件时,需要考虑目录的自动创建,这里通过递归方式逐层创建父目录,如下所示:

Java代码  0fd15f644694a335690493798a0b6d72.png

/**

* 文件探针

*

*

* 当父目录不存在时,创建目录!

*

*

* @param dirFile

*/

private static void fileProber(File dirFile) {

File parentFile = dirFile.getParentFile();

if (!parentFile.exists()) {

// 递归寻找上级目录

fileProber(parentFile);

parentFile.mkdir();

}

}

在压缩的时候,我们是将一个一个文件作为压缩添加项(ZipEntry)添加至压缩包中,解压缩就要将一个一个压缩项从压缩包中提取出来,如下所示:

Java代码  0fd15f644694a335690493798a0b6d72.png

/**

* 文件 解压缩

*

* @param destFile

*            目标文件

* @param zis

*            ZipInputStream

* @throws Exception

*/

private static void decompress(File destFile, ZipInputStream zis)

throws Exception {

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值