java unzip 文件包

package Zip;

import java.io.BufferedOutputStream;
import java.io.BufferedReader;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.io.OutputStreamWriter;
import java.util.Enumeration;

import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;

public class ExtraExcel {

 private ZipFile zipFile;

 /**
  * 解压zip包
  * @param zipFilePath zip文件路径
  * @param targetPath 解压缩到的位置,如果为null或空字符串则默认解压缩到跟zip包同目录跟zip包同名的文件夹下
  */
 public void unZip(String zipFilePath,String targetPath){//unZipfileName需要解压的zip文件名 
  OutputStream fileOut;
  File file;
  InputStream inputStream;
  try{
   //生成一个zip的文件 
   this.zipFile = new ZipFile(zipFilePath);
   String directoryPath = "";
   if(null == targetPath || "".equals(targetPath)){
    directoryPath = zipFilePath.substring(0,zipFilePath.lastIndexOf("."));
   }else{
    directoryPath = targetPath;
   }
   //遍历zipFile中所有的实体,并把他们解压出来
   for(Enumeration entries = this.zipFile.getEntries(); entries.hasMoreElements();){
    ZipEntry entry = (ZipEntry)entries.nextElement();
    //生成他们解压后的一个文件 
    file = new File(entry.getName());
    //文件还是目录的判断     isDirectory()=true<目录>
    if(entry.isDirectory()){
     String directoryPath1 = directoryPath + File.separator + file;
     System.out.println(directoryPath1);
     File file1 = new File(directoryPath1);
     if(!file1.exists()){
      file1.mkdirs();
     }
     continue;
    }else{
     
     File targetFile = buildFile(directoryPath + File.separator + file, false);
     System.out.println(targetFile);
     fileOut = new BufferedOutputStream(new FileOutputStream(targetFile));
     
     inputStream = this.zipFile.getInputStream(entry);
     //开辟缓冲区
     byte[] buffer = new byte[1024];
     int readLen = 0;
     while((readLen = inputStream.read(buffer, 0, 1024)) >= 0){
      fileOut.write(buffer, 0, readLen);
     }

     fileOut.close();
     inputStream.close();
    }
   }
   this.zipFile.close();
  }catch(IOException ioe){
          ioe.printStackTrace();
          }
      }
 
 /**
  * 生产文件 如果文件所在路径不存在则生成路径
  * @param fileName 文件名 带路径
  * @param isDirectory 是否为路径
  * @return
  */
 public static File buildFile(String fileName, boolean isDirectory) {

        File target = new File(fileName);

        if (isDirectory) {

            target.mkdirs();

        } else {

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

                target.getParentFile().mkdirs();

                target = new File(target.getAbsolutePath());

            }

        }

        return target;

    }
 
 public static void main(String[] args) {
  String filePath = "C:\Users\Documents\1111.zip";
  String destination = "C:\Users\Documents\work";
  File file = new File(filePath);
  String fileName = file.getName();
  ExtraExcel ee = new ExtraExcel();
  ee.unZip(filePath,destination);

 }

}

原文地址:https://www.cnblogs.com/skyball/p/5889544.html