zoukankan      html  css  js  c++  java
  • java实现解压zip文件,(亲测可用)!!!!!!

    项目结构:

    Util.java内容:

    package com.cfets.demo;
    
    import java.io.File;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.io.InputStream;
    import java.io.OutputStream;
    import java.nio.charset.Charset;
    import java.text.SimpleDateFormat;
    import java.util.Date;
    import java.util.Enumeration;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipFile;
    
    public class Util {
    
        public static void main(String[] args) {
          // 文件存放位置
            String zipPath = "download/资产支持证券信用评级_20180820.xml.zip";
            File zipFile = new File(zipPath);
            String descDir = "download/";
            boolean flag = unZip(zipFile, descDir);
            System.out.println("解压成功还是失败=" + flag);
        }
    /**
         * 解压zip文件
         * 
         * @param zipFile目标文件
         * @param descDir解压后存放的位置
         * @return true/false
         */
        public static boolean unZip(File zipFile, String descDir) {
            boolean flag = false;
            File pathFile = new File(descDir);
            if (!pathFile.exists()) {
                pathFile.mkdirs();
            }
            ZipFile zip = null;
            try {
                // 指定编码,否则压缩包里面不能有中文目录
                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).replace("/",
                            File.separator);
                    // 判断路径是否存在,不存在则创建文件路径
                    File file = new File(outPath.substring(0,
                            outPath.lastIndexOf(File.separator)));
                    if (!file.exists()) {
                        file.mkdirs();
                    }
                    // 判断文件全路径是否为文件夹,如果是上面已经上传,不需要解压
                    if (new File(outPath).isDirectory()) {
                        continue;
                    }
    
                    OutputStream out = new FileOutputStream(outPath);
                    byte[] buf1 = new byte[2048];
                    int len;
                    while ((len = in.read(buf1)) > 0) {
                        out.write(buf1, 0, len);
                    }
                    in.close();
                    out.close();
                }
                flag = true;
                // 必须关闭,否则无法删除该zip文件
                zip.close();
            } catch (IOException e) {
                e.printStackTrace();
            }
            return flag;
        }
    
    }
  • 相关阅读:
    kitkat-s5p4418drone 记录
    Android USER 版本与ENG 版本的差异
    Android中的Apk的加固(加壳)原理解析和实现(转)
    Android悬浮窗实现 使用WindowManager
    Android系统的开机画面显示过程分析
    【PMP】变更流程图与说明
    【PMP】十五至尊图
    【Excle】一个比VLOOKUP牛的函数LOOKUP
    【DB2】慎用nickname,可能会引起效率较低
    【读书】人生向前-读书笔记
  • 原文地址:https://www.cnblogs.com/zhanzhuang/p/9512095.html
Copyright © 2011-2022 走看看