zoukankan      html  css  js  c++  java
  • Java实现解压zip

    方式一:

    package com.lanyuan.assembly.util;
    import java.io.BufferedOutputStream;
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.util.Enumeration;
    import org.apache.tools.zip.ZipEntry;
    import org.apache.tools.zip.ZipFile;
    /** 
     * 解压Zip文件工具类 
     * @author zhangyongbo 
     * 
     */
    public class ZipUtil
    {
      private static final int buffer = 2048; 
     /** 
      * 解压Zip文件 
      * @param path 文件目录 
      */
     public static void unZip(String path) 
       { 
        int count = -1; 
        String savepath = ""; 
        File file = null; 
        InputStream is = null; 
        FileOutputStream fos = null; 
        BufferedOutputStream bos = null; 
        savepath = path.substring(0, path.lastIndexOf(".")) + File.separator; //保存解压文件目录 
        new File(savepath).mkdir(); //创建保存目录 
        ZipFile zipFile = null; 
        try
        { 
          zipFile = new ZipFile(path,"gbk"); //解决中文乱码问题 
          Enumeration<?> entries = zipFile.getEntries(); 
          while(entries.hasMoreElements()) 
          { 
            byte buf[] = new byte[buffer]; 
            ZipEntry entry = (ZipEntry)entries.nextElement(); 
            String filename = entry.getName(); 
            boolean ismkdir = false; 
            if(filename.lastIndexOf("/") != -1){ //检查此文件是否带有文件夹 
             ismkdir = true; 
            } 
            filename = savepath + filename; 
            if(entry.isDirectory()){ //如果是文件夹先创建 
             file = new File(filename); 
             file.mkdirs(); 
              continue; 
            } 
            file = new File(filename); 
            if(!file.exists()){ //如果是目录先创建 
             if(ismkdir){ 
             new File(filename.substring(0, filename.lastIndexOf("/"))).mkdirs(); //目录先创建 
             } 
            } 
            file.createNewFile(); //创建文件 
            is = zipFile.getInputStream(entry); 
            fos = new FileOutputStream(file); 
            bos = new BufferedOutputStream(fos, buffer); 
            while((count = is.read(buf)) > -1) 
            { 
              bos.write(buf, 0, count); 
            } 
            bos.flush(); 
            bos.close(); 
            fos.close(); 
            is.close(); 
          } 
          zipFile.close(); 
        }catch(IOException ioe){ 
          ioe.printStackTrace(); 
        }finally{ 
           try{ 
           if(bos != null){ 
             bos.close(); 
           } 
           if(fos != null) { 
             fos.close(); 
           } 
           if(is != null){ 
             is.close(); 
           } 
           if(zipFile != null){ 
             zipFile.close(); 
           } 
           }catch(Exception e) { 
             e.printStackTrace(); 
           } 
         } 
       } 
    /*public static void main(String[] args) 
      { 
        unZip("F:\110000002.zip"); 
        String f = "F:\110000002";
        File file = new File(f);
        String[] test=file.list();
        for(int i=0;i<test.length;i++){
          System.out.println(test[i]);
        }
        System.out.println("------------------");
        String fileName = "";
        File[] tempList = file.listFiles();
        for (int i = 0; i < tempList.length; i++) {
          if (tempList[i].isFile()) {
            System.out.println("文   件:"+tempList[i]);
            fileName = tempList[i].getName();
            System.out.println("文件名:"+fileName);
          }
          if (tempList[i].isDirectory()) {
            System.out.println("文件夹:"+tempList[i]);
          }
        }
      } */
    }

    方式二:

    import java.io.*;
    import java.nio.charset.Charset;
    import java.util.Enumeration;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipFile;
    /**
     * Created by wzj on 2016/9/9.
     */
    public class UZipFile
    {
      /**
       * 解压到指定目录
       */
      public static void unZipFiles(String zipPath,String descDir)throws IOException
      {
        unZipFiles(new File(zipPath), descDir);
      }
      /**
       * 解压文件到指定目录
       */
      @SuppressWarnings("rawtypes")
      public static void unZipFiles(File zipFile,String descDir)throws IOException
      {
        File pathFile = new File(descDir);
        if(!pathFile.exists())
        {
          pathFile.mkdirs();
        }
        //解决zip文件中有中文目录或者中文文件
        ZipFile zip = new ZipFile(zipFile, Charset.forName("GBK"));
        for(Enumeration entries = zip.entries(); entries.hasMoreElements();)
        {
          ZipEntry entry = (ZipEntry)entries.nextElement();
          String zipEntryName = entry.getName();
          InputStream in = zip.getInputStream(entry);
          String outPath = (descDir+zipEntryName).replaceAll("\*", "/");;
          //判断路径是否存在,不存在则创建文件路径
          File file = new File(outPath.substring(0, outPath.lastIndexOf('/')));
          if(!file.exists())
          {
            file.mkdirs();
          }
          //判断文件全路径是否为文件夹,如果是上面已经上传,不需要解压
          if(new File(outPath).isDirectory())
          {
            continue;
          }
          //输出文件路径信息
          System.out.println(outPath);
          OutputStream out = new FileOutputStream(outPath);
          byte[] buf1 = new byte[1024];
          int len;
          while((len=in.read(buf1))>0)
          {
            out.write(buf1,0,len);
          }
          in.close();
          out.close();
        }
        System.out.println("******************解压完毕********************");
      }
      public static void main(String[] args) throws IOException {
        /**
         * 解压文件
         */
        File zipFile = new File("d:/资料.zip");
        String path = "d:/zipfile/";
        unZipFiles(zipFile, path);
      }
    }

    转载自:https://www.jb51.net/article/127844.htm

  • 相关阅读:
    bzoj 1030 [JSOI2007]文本生成器
    Swift 学习笔记 (闭包)
    Swift 学习笔记 (函数)
    HTML 学习笔记 JQueryUI(Interactions,Widgets)
    HTML 学习笔记 JQuery(表单,表格 操作)
    HTML 学习笔记 JQuery(animation)
    HTML 学习笔记 JQuery(盒子操作)
    HTML 学习笔记 JQuery(事件)
    HTML 学习笔记 JQuery(DOM 操作3)
    HTML 学习笔记 JQuery(DOM 操作2)
  • 原文地址:https://www.cnblogs.com/scorates/p/11660303.html
Copyright © 2011-2022 走看看