Java实现Zip压缩包解压

 对zip压缩包的解压是比较常见的应用场景,java代码的实现也很简单。废话不多说,直接上代码吧
一、代码
 /**

  * zip解压  

  * @param srcFile        zip源文件

  * @param destDirPath     解压后的目标文件夹

  * @throws RuntimeException 解压失败会抛出运行时异常

  */

 public static void unZip(File srcFile, String destDirPath) throws RuntimeException {

     long start = System.currentTimeMillis();

     // 判断源文件是否存在

     if (!srcFile.exists()) {

         throw new RuntimeException(srcFile.getPath() + "所指文件不存在");

     }

     // 开始解压

     ZipFile zipFile = null;

     try {

         zipFile = new ZipFile(srcFile);

         Enumeration<?> entries = zipFile.entries();

         while (entries.hasMoreElements()) {

             ZipEntry entry = (ZipEntry) entries.nextElement();

             System.out.println("解压" + entry.getName());

             // 如果是文件夹,就创建个文件夹

             if (entry.isDirectory()) {

                 String dirPath = destDirPath + "/" + entry.getName();

                 File dir = new File(dirPath);

                 dir.mkdirs();

             } else {

                 // 如果是文件,就先创建一个文件,然后用io流把内容copy过去

                 File targetFile = new File(destDirPath + "/" + entry.getName());

                 // 保证这个文件的父文件夹必须要存在

                 if(!targetFile.getParentFile().exists()){

                     targetFile.getParentFile().mkdirs();

                 }

                 targetFile.createNewFile();

                 // 将压缩文件内容写入到这个文件中

                 InputStream is = zipFile.getInputStream(entry);

                 FileOutputStream fos = new FileOutputStream(targetFile);

                 int len;

                 byte[] buf = new byte[BUFFER_SIZE];

                 while ((len = is.read(buf)) != -1) {

                     fos.write(buf, 0, len);

                 }

                 // 关流顺序,先打开的后关闭

                 fos.close();

                 is.close();

             }

         }

         long end = System.currentTimeMillis();

         System.out.println("解压完成,耗时:" + (end - start) +" ms");

     } catch (Exception e) {

         throw new RuntimeException("unzip error from ZipUtils", e);

     } finally {

         if(zipFile != null){

             try {

                 zipFile.close();

             } catch (IOException e) {

                 e.printStackTrace();

             }

         }

     }

 }

二、小结
    解压的代码并不复杂,不过有个关键点是:创建文件时,需要保证该文件所在的文件夹必须存在。
    如果对Java实现zip压缩感兴趣,可看我上一篇博客:http://www.cnblogs.com/zeng1994/p/7862288.html

  • 15
    点赞
  • 100
    收藏
    觉得还不错? 一键收藏
  • 11
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值