• 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;
        }
    
    }
  • 相关阅读:
    Docker | 第二章:第一个Docker应用
    Docker | 第一章:Docker简介
    Docker | 第零章:前言
    SpringBoot | 第十五章:基于Postman的RESTful接口测试
    SpringBoot | 第十四章:基于Docker的简单部署
    SpringBoot | 第十三章:测试相关(单元测试、性能测试)
    2014年计划
    学习方法,工作方法 探讨
    2013年总结
    asp.net用Zxing库实现条形码输出
  • 原文地址:https://www.cnblogs.com/zhanzhuang/p/9512095.html
Copyright © 2020-2023  润新知