解压Zip文件工具类

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;

public class TestZipUtil {
    /** 
     *  解压Zip文件工具类 
     * @author zhangyongbo 
     * 
     */  
    public static 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("D:\\zcs20180706194811.zip"); 
            String f = "D:\\zcs20180706194811\\20180706194811";
            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]);
                }
            }
        }  
    }
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值