zoukankan      html  css  js  c++  java
  • java 解压文件

    package ofd;
    
    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.util.Enumeration;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipFile;
    
    public class Ofd {
    
        public static void main(String[] args) {
          // 文件存放位置zip rar尚未测试
            String zipPath = "C:\Users\Gean_2016\Desktop\ofd\3.ofd";
            File zipFile = new File(zipPath);
            String descDir = "C:\Users\Gean_2016\Desktop\ofd123\3\";
            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;
        }
    
    }
  • 相关阅读:
    wex5 实战 框架拓展之2 事件派发与data刷新
    wex5 实战 框架拓展之1 公共data组件(Data)
    wex5 实战 HeidiSQL 导入Excel数据
    wex5 实战 手指触屏插件 hammer的集成与优劣
    wex5 实战 登陆帐号更换与用户id一致性
    wex5 实战 用户点评与提交设计技巧
    wex5 实战 省市县三级联动与地址薄同步
    wex5 实战 wex5与js的组件关系与执行顺序(父子与先后)
    wex5 实战 单页模式下的多页面数据同步
    [BZOJ]4237: 稻草人
  • 原文地址:https://www.cnblogs.com/ljc1212/p/13879869.html
Copyright © 2011-2022 走看看