1. //第一个参数就是需要解压的文件,第二个就是解压的目录
    public static boolean upZipFileDir(File zipFile, String folderPath) {
    ZipFile zfile= null;
    try {
    //转码为GBK格式,支持中文
    zfile = new ZipFile(zipFile,"GBK");
    } catch (IOException e) {
    e.printStackTrace();
    return false;
    }
    Enumeration zList=zfile.getEntries();
    ZipEntry ze=null;
    byte[] buf=new byte[1024];
    while(zList.hasMoreElements()){
    ze=(ZipEntry)zList.nextElement();
    //列举的压缩文件里面的各个文件,判断是否为目录
    if(ze.isDirectory()){
    String dirstr = folderPath + ze.getName();
    dirstr.trim();
    File f=new File(dirstr);
    f.mkdir();
    continue;
    }
    OutputStream os= null;
    FileOutputStream fos = null;
    // ze.getName()会返回 script/start.script这样的,是为了返回实体的File
    File realFile = getRealFileName(folderPath, ze.getName());
    try {
    fos = new FileOutputStream(realFile);
    } catch (FileNotFoundException e) {
    e.printStackTrace();
    return false;
    }
    os = new BufferedOutputStream(fos);
    InputStream is= null;
    try {
    is = new BufferedInputStream(zfile.getInputStream(ze));
    } catch (IOException e) {
    e.printStackTrace();
    return false;
    }
    int readLen=0;
    //进行一些内容复制操作
    try {
    while ((readLen=is.read(buf, 0, 1024))!=-1) {
    os.write(buf, 0, readLen);
    }
    } catch (IOException e) {
    e.printStackTrace();
    return false;
    }
    try {
    is.close();
    os.close();
    } catch (IOException e) {
    e.printStackTrace();
    return false;
    }
    }
    try {
    zfile.close();
    } catch (IOException e) {
    e.printStackTrace();
    return false;
    }
    return true;
    }
  2.  
  3. /**
    * 给定根目录,返回一个相对路径所对应的实际文件名.
    * @param baseDir 指定根目录
    * @param absFileName 相对路径名,来自于ZipEntry中的name
    * @return java.io.File 实际的文件
    */
    public static File getRealFileName(String baseDir, String absFileName){
    String[] dirs=absFileName.split("/");
    File ret = new File(baseDir);
    String substr = null;
  4.  
  5. if(dirs.length>1){
    for (int i = 0; i < dirs.length-1;i++) {
    substr = dirs[i];
    ret=new File(ret, substr);
    }
  6.  
  7. if(!ret.exists())
    ret.mkdirs();
    substr = dirs[dirs.length-1];
    ret=new File(ret, substr);
    return ret;
    }else{
    ret = new File(ret,absFileName);
    }
    return ret;
    }
    注意:上面代码中的upZipFileDir方法,所用到的ZipFile类,尽可能不用java.util.zip.ZipFile,而是用org.apache.tools.zip.ZipFile。这里需要添加依赖库:compile 'org.apache.ant:ant:1.8.4'
  1.  

对.zip格式的文件进行解压缩的更多相关文章

  1. Java实现对zip和rar文件的解压缩

    通过java实现对zip和rar文件的解压缩

  2. 如何在linux下解压缩rar和zip格式的文件压缩包

    转载:http://oldboy.blog.51cto.com/2561410/597515 使用apt-get安装:  sudo apt-get install  rar  zip rar使用: 将 ...

  3. python(49):把文件压缩成zip格式的文件

    有时需要用到压缩文件,网上搜集了一段代码: 分享一下: import os import zipfile def make_zip(localPath, pname): zipf = zipfile. ...

  4. 列出zip文件内全部内容 当前目录下的所有文件压缩成zip格式的文件(file.zip)

    [root@ok Desktop]# zip -r image.zip ./*.jpg adding: 20161007_113743.jpg (deflated 0%) adding: 201610 ...

  5. zip格式压缩文件辅助类(ZipHelper)

    /// <summary> /// 压缩解压文件 /// </summary> public class ZipHelper { /// <summary> /// ...

  6. Linux下zip格式文件的解压缩和压缩

    Linux下zip格式文件的解压缩和压缩 Linux下的软件包很多都是压缩包,软件的安装就是解压缩对应的压缩包.所以,就需要熟练使用常用的压缩命令和解压缩命令.最常用的压缩格式有.tar.gz/tgz ...

  7. C#压缩文件为zip格式

    Vercher   C#压缩文件为zip格式 需要ICSharpCode.SharpZipLib.dll,网上下载的到. 代码是从网上找来的: 1 public class ZipClass 2 { ...

  8. Linux压缩解压 tar.gz格式的文件.查看tomcat是否运行

    tar命令详解 -c: 建立压缩档案 -x:解压 -t:查看内容 -r:向压缩归档文件末尾追加文件 -u:更新原压缩包中的文件 这五个是独立的命令,压缩解压都要用到其中一个,可以和别的命令连用但只能用 ...

  9. java压缩/解压缩zip格式文件

    因为项目要用到压缩.解压缩zip格式压缩包,只好自己封装一个,对于网上流行的中文乱码的问题,本文的解决方法是用apache的包代替jdk里的.基本上还是比较好用的. 废话少说,直接上代码. }     ...

随机推荐

  1. MYSQL实战-------丁奇(极客时间)学习笔记

    1.基础架构:一条sql查询语句是如何执行的? mysql> select * from T where ID=10: 2.基础架构:一条sql更新语句是如何执行的? mysql> upd ...

  2. bzoj 2816: [ZJOI2012]网络 (LCT 建多棵树)

    链接:https://www.lydsy.com/JudgeOnline/problem.php?id=2816 题面: http://www.lydsy.com/JudgeOnline/upload ...

  3. Swagger如何测试Date类型参数

    问题 Swagger测试时,参数直接输入日期格式化后的类型,会报参数日期转换错误 :ConversionFailedException 解决 网上说在参数上添加注解 @DateTimeFormat(p ...

  4. python学习日记(内置函数)

    目前所有内置函数 http://www.runoob.com/python3/python3-built-in-functions.html *菜鸟教程* 内置函数分类 作用域相关globals(). ...

  5. 初学cdq分治学习笔记(可能有第二次的学习笔记)

    前言骚话 本人蒟蒻,一开始看到模板题就非常的懵逼,链接,学到后面就越来越清楚了. 吐槽,cdq,超短裙分治....(尴尬) 正片开始 思想 和普通的分治,还是分而治之,但是有一点不一样的是一般的分治在 ...

  6. virtual-dom

    virtual-dom的历史 react最早研究virtual-dom,后来react火了之后,大家纷纷研究react的高性能实现,出现了2个流派,一是研究react算法的算法派,(virtual-d ...

  7. (一)Qt5模块,QtCreator常用快捷键,命名规范

    常用快捷键 1)帮助文件:F1 (光标在函数名字或类名上,按 F1 即可跳转到对应帮助文档,查看其详细用法) 2).h 文件和对应.cpp 文件切换:F4 3)编译并运行:Ctrl + R 4)函数声 ...

  8. Numpy 系列(八)- 广播机制

    什么是广播 我们都知道,Numpy中的基本运算(加.减.乘.除.求余等等)都是元素级别的,但是这仅仅局限于两个数组的形状相同的情况下. 可是大家又会发现,如果让一个数组加1的话,结果时整个数组的结果都 ...

  9. pip换源安装

    pip install --index-url https://pypi.tuna.tsinghua.edu.cn/simple 要安装的 有些工具安装太慢, 换源安装一下, 速度一下子飞起

  10. HTML(一)HTML基础语法(HTML简介,HTML文档声明)

    HTML 概念介绍 [概念] (Hyper Text Markup Language)超文本标记语言,是用来描述网页的一种语言 超文本(Hyper Text):不只包括文本,也可以包括图片.链接.音乐 ...