通过java api实现解压缩zip示例

 更新时间:2014年04月11日 09:27:10   作者:  
这篇文章主要介绍了通过java api实现解压缩zip示例,需要的朋友可以参考下

通过java api实现zip压缩格式的压缩与解压缩

复制代码 代码如下:

package com.hongyuan.test;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;
import java.util.zip.ZipOutputStream;

public class ZipTest {

 public static void main(String[] args) throws IOException {
  unZip("bootstrap.zip");
  zip("bootstrap_01.zip","bootstrap/css/bootstrap.css","bootstrap/css/bootstrap.min.css");
 }

 public static void unZip(String fileName) throws IOException{
  //获取压缩文件对象
  ZipFile zf = new ZipFile(fileName);

  //遍历文件条目
  Enumeration<? extends ZipEntry> items = zf.entries();
  while (items.hasMoreElements()) {
   ZipEntry item = items.nextElement();
   String filePath = zf.getName().substring(0,
     zf.getName().lastIndexOf("."))
     + File.separator + item.getName();
   File fileDir = new File(filePath.substring(0,
     filePath.lastIndexOf("/")));
   if (!fileDir.exists()) {
    fileDir.mkdirs();
   }

   //从流中读取文件
   OutputStream out = new FileOutputStream(filePath);
   InputStream in = zf.getInputStream(item);
   byte[] temp = new byte[1024];
   int len = 0;
   while ((len = in.read(temp)) > 0) {
    out.write(temp, 0, len);
   }
   in.close();
   out.close();
  }
  zf.close();
 }


 public static void zip(String fileName,String... files) throws IOException{
  //构造压缩文件输出流
  ZipOutputStream zos=new ZipOutputStream(new FileOutputStream(fileName));
  for(int i=0,size=files.length;i<size;i++){
   //创建压缩实体
   ZipEntry entry=new ZipEntry(files[i].substring(files[i].lastIndexOf("/")+1));
   zos.putNextEntry(entry);
   //将文件内容输出到压缩流中
   InputStream is=new FileInputStream(files[i]);
   int count=0;
   byte[] buffer=new byte[1024];
   while((count=is.read(buffer))>=0){
    zos.write(buffer, 0, count);
   }
   zos.flush();
   zos.closeEntry();
   is.close();
  }
 }
}



相关文章

  • SpringBoot自动配置的原理详解

    SpringBoot自动配置的原理详解

    这篇文章主要介绍了SpringBoot自动配置的原理详解,本节更详细地介绍了如何使用 Spring Boot,它涵盖了诸如构建系统、自动配置以及如何运行应用程序等主题,我们还介绍了一些 Spring Boot 最佳实践,需要的朋友可以参考下
    2023-09-09
  • java split用法详解及实例代码

    java split用法详解及实例代码

    这篇文章主要介绍了java split用法的相关资料,并附实例代码,帮助大家学习参考,需要的朋友可以参考下
    2016-09-09
  • Java读取图片EXIF信息的方法

    Java读取图片EXIF信息的方法

    这篇文章主要介绍了Java读取图片EXIF信息的方法,较为详细的分析了图片EXIF信息的概念、功能及java读取EXIF信息的实现技巧,需要的朋友可以参考下
    2015-07-07
  • 详解Spring Boot 使用Spring security 集成CAS

    详解Spring Boot 使用Spring security 集成CAS

    本篇文章主要介绍了详解Spring Boot 使用Spring security 集成CAS,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2017-05-05
  • Java中将File转化为MultipartFile的操作

    Java中将File转化为MultipartFile的操作

    这篇文章主要介绍了Java中将File转化为MultipartFile的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-10-10
  • JAVA实现空间索引编码——GeoHash的示例

    JAVA实现空间索引编码——GeoHash的示例

    本篇文章主要介绍了JAVA实现空间索引编码——GeoHash的示例,如何从众多的位置信息中查找到离自己最近的位置,有兴趣的朋友可以了解一下
    2016-10-10
  • Java正则表达式API Matcher类方法

    Java正则表达式API Matcher类方法

    这篇文章主要介绍了Java正则表达式API Matcher类方法,对Matcher类的一些有用方法进行功能对它们进行分组展开介绍,需要的朋友可以参考一下
    2022-06-06
  • Spring事物的传播特性详解

    Spring事物的传播特性详解

    这篇文章主要介绍了Spring事物的传播性详解,文中有非常详细的代码示例,对正在学习java的小伙伴们有非常好的帮助,需要的朋友可以参考下
    2021-05-05
  • Spring配置多个数据源并实现动态切换示例

    Spring配置多个数据源并实现动态切换示例

    本篇文章主要介绍了Spring配置多个数据源并实现动态切换示例,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-04-04
  • Spring Boot 整合 Fisco Bcos的案例分析(区块链)

    Spring Boot 整合 Fisco Bcos的案例分析(区块链)

    本篇文章介绍的 Spring Boot 整合 Fisco Bcos的案例,是在阿里云服务器上部署验证的。大家可根据自己的电脑环境,对比该案例进行开发即可,具体案例代码跟随小编一起看看吧
    2022-01-01

最新评论