zoukankan      html  css  js  c++  java
  • 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);

     }

    }

  • 相关阅读:
    VHD进阶:差分VHD备份系统
    默认系统为UEFI启动的GPT分区的WIN7(8),如何安装VHD的UEFI WIN8(7)
    在WIN7/8下把XP装入VHD (上)
    USB鼠标线序
    组合与继承
    结构体内存对齐
    多媒体编码与格式
    网络病毒
    寄存器
    0
  • 原文地址:https://www.cnblogs.com/skyball/p/5889544.html
Copyright © 2011-2022 走看看