ZIP解压缩工具类

import java.io.File;
import org.apache.tools.ant.Project;
import org.apache.tools.ant.taskdefs.Expand;
import org.apache.tools.ant.taskdefs.Zip;
import org.apache.tools.ant.types.FileSet;

/**
 * ZIP解压缩工具类
 */
public class Zipper {

    // ZIP解压缩时
    public final static String encoding = "GBK";

    /**
     * 压缩文件或文件夹
     * ------------------------------------
     * @param srcPathname 需要被压缩的文件或文件夹路径
     * @param zipFilepath 将要生成的ZIP文件路径
     */
    public static void zip(String srcPathname, String zipFilepath) throws Exception {
        System.out.println(String.format("start compress ( %s ).", srcPathname));

        // 检查文件是否存在
        File file = new File(srcPathname);
        if (!file.exists()) {
            throw new RuntimeException(String.format("source file or directory ( %s ) does not exist.", srcPathname));
        }

        // 创建项目
        Project proj = new Project();

        // 文件设置
        FileSet fileSet = new FileSet();
        fileSet.setProject(proj);
        if (file.isDirectory()) { // 如果是目录
            fileSet.setDir(file);
        } else { // 如果是单个文件
            fileSet.setFile(file);
        }

        // 压缩文件保存到目标地址
        Zip zip = new Zip();
        zip.setProject(proj);
        zip.setDestFile(new File(zipFilepath));
        zip.addFileset(fileSet);
        zip.setEncoding(encoding);
        zip.execute();

        System.out.println(String.format("compress successed of ( %s ). zip file is ( %s )", srcPathname, zipFilepath));
    }

    /**
     * 解压缩文件或文件夹
     * ------------------------------------
     * @param zipFilepath    需要被解压的ZIP文件路径
     * @param destDir          将要被解压到的目标文件夹
     */
    public static void unzip(String zipFilepath, String destDir) throws Exception {
        System.out.println(String.format("start uncompress ( %s ).", zipFilepath));

        // 判断要解压的ZIP包是否存在
        File file = new File(zipFilepath);
        if (!file.exists()) {
            throw new RuntimeException(String.format("zip file ( %s ) does not exist.", zipFilepath));
        }

        // 创建项目
        Project proj = new Project();

        // 解压设置
        Expand expand = new Expand();
        expand.setProject(proj);
        expand.setTaskType("unzip");
        expand.setTaskName("unzip");
        expand.setEncoding(encoding);

        expand.setSrc(new File(zipFilepath));
        expand.setDest(new File(destDir));

        // 执行解压
        expand.execute();

        System.out.println(String.format("uncompress successed of ( %s ).", zipFilepath));
    }

    /**
     * 测试解压缩方法
     */
    public static void main(String[] args) {

        /*try {
            String srcPathname = "D:\\test\\test";
            String zipFilepath = "D:\\test\\test.zip";
            Zipper.zip(srcPathname, zipFilepath);
        } catch (Exception e) {
            e.printStackTrace();
        }*/

        try {
            String zipFilepath = "D:\\test\\test.zip";
            String destDir = "D:\\test\\upzip";
            Zipper.unzip(zipFilepath, destDir);
        } catch (Exception e) {
            e.printStackTrace();
        }

    }
}

依赖jar

<dependency>
  <groupId>org.apache.ant</groupId>
  <artifactId>ant</artifactId>
  <version>1.9.7</version>
</dependency>

原文地址:https://www.cnblogs.com/zj0208/p/8945149.html

时间: 2024-08-29 14:11:53

ZIP解压缩工具类的相关文章

RDIFramework.NET ━ .NET快速信息化系统开发框架 V3.2 新增解压缩工具类ZipHelper

在项目对文件进行解压缩是非常常用的功能,对文件进行压缩存储或传输可以节省流量与空间.压缩文件的格式与方法都比较多,比较常用的国际标准是zip格式.压缩与解压缩的方法也很多,在.NET 2.0开始,在System.IO.Compression中微软已经给我们提供了解压缩的方法GZipStream.对于GZipStream的使用以及优缺点网上已经有非常多的文章,本文主要讲的是利用三方开源组件ICSharpCode.SharpZipLib进行文件的解压缩. SharpZipLib地址:http://w

FileZip for mac(ZIP解压缩工具)

FileZip for mac是一款小巧实用的ZIP解压缩工具,它可以轻松解压压缩ZIP以及其他不同类型的压缩文件,您也可以使用密码保护它们.只需将要压缩的文件拖放到Dock或主窗口中的FileZip图标即可.macdown提供本软件下载. FileZip mac免费版软件介绍 FileZip Mac版是Mac平台上的一款解压缩工具.FileZip Mac版是一个小巧易用的程序,可以压缩或解压许多不同类型的压缩文件.使用FileZip Mac版,您可以根据需要压缩任意数量的文件.您也可以使用密码

Java.util.zip 压缩与解压缩工具类

Java.util.zip 提供用于读写标准 ZIP 和 GZIP 文件格式的类. 还包括使用 DEFLATE 压缩算法(用于 ZIP 和 GZIP 文件格式)对数据进行压缩和解压缩的类. 依赖 Jdk 编写该工具类,不依赖任何第三方 jar,随用随取,实现功能大体如下: 1.目录级别递归压缩与解压缩 zip: 2.单文件压缩和解压缩 zip : import java.io.*; import java.util.zip.ZipEntry; import java.util.zip.ZipIn

AntZipUtils【基于Ant的Zip压缩解压缩工具类】

版权声明:本文为博主原创文章,未经博主允许不得转载. 前言 Android 压缩解压zip文件一般分为两种方式: 基于JDK的Zip压缩工具类 该版本存在问题:压缩时如果目录或文件名含有中文,压缩后会变成乱码: 使用Java的zip包可以进行简单的文件压缩和解压缩处理时,但是遇到包含中文汉字目录或者包含多层子目录的复杂目录结构时,容易出现各种各样的问题. 基于Ant的Zip压缩工具类 需要第三方JAR包:Apache的ant.jar: 解决了上面存在的问题. 效果图 代码分析 常用的方法: 压缩

C# 解压缩工具类GZip

using System; using System.Collections.Generic; using System.IO; using System.IO.Compression; using System.Linq; using System.Text; namespace 落地页测试代码 { public class GZip { /// <summary> /// 压缩 /// </summary> /// <param name="text"

C#工具类:使用SharpZipLib进行压缩、解压文件

SharpZipLib是一个开源的C#压缩解压库,应用非常广泛.就像用ADO.NET操作数据库要打开连接.执行命令.关闭连接等多个步骤一样,用SharpZipLib进行压缩和解压也需要多个步骤.SharpZipLib功能比较强大,在很多C#的应用中,都有它的身影,我们可以通过引入SharpZipLib类库文件,在程序中实现自动压缩文件以及解压缩文件的功能,例如一个常见的情景就是用户客户端程序下载更新包,下载完成之后,在本地自动解压文件. SharpZipLib的官方地址是:http://icsh

工具类-解压zip包和压缩照片

    由于目前系统在服务器上的资料占用空间太大.查了原因之后发现时因为照片没有经过压缩.但是所有照片都在zip包里,比较犯愁.于是写了如下的工具类.主要实现的功能是:扫描一个文件夹下的所有zip包,然后把zip包进行解压.拿到所有的照片.如果照片大于300KB就进行等比例压缩.压缩之后重新打包成zip包.替换掉原来的zip包.     并且可以可有选择是否等比压缩,压缩比例等.代码如下: filetest类: package daoimpl; import java.io.BufferedIn

文件压缩、解压工具类。文件压缩格式为zip

package com.JUtils.file; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.util.zip.ZipEntry; impor

java工具类 文件zip压缩 base64 加密,base64解密 zip解压

package com.cfam.utils; import java.io.BufferedOutputStream; import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException;