`

Zip 压缩和解压缩

阅读更多
要依赖
ant.1.7.0.jar

<dependency>
	<groupId>ant</groupId>
	<artifactId>ant</artifactId>
	<version>1.7.0</version>
	<exclusions>
		<exclusion>
			<groupId>org.apache.ant</groupId>
			<artifactId>ant-launcher</artifactId>
		</exclusion>
	</exclusions>
</dependency>


import org.apache.tools.ant.Project;
import org.apache.tools.ant.taskdefs.Zip;
import org.apache.tools.ant.types.FileSet;

/**
 * ZIP格式文件压缩/解压工具类
 * 
 * @author 应卓
 *
 */
public final class ZipUtils {

	/**
	 * 私有构造方法
	 */
	private ZipUtils() {
		super();
	}

	/**
	 * 压缩zip文件
	 * 
	 * @param directory 压缩目录
	 * @param dest 压缩后的zip文件
	 * @param encoding 字符编码
	 */
	public static void compress(File directory, File dest, String encoding) {
		compress(directory, dest, encoding, null, null);
	}

	/**
	 * 压缩zip文件
	 * 
	 * @param directory 压缩目录
	 * @param dest 压缩后的zip文件
	 * @param encoding 字符编码
	 * @param includes 包含表达式(ant风格,逗号分隔)
	 * @param excludes 排除表达式(ant风格,逗号分隔)
	 */
	public static void compress(File directory, File dest, String encoding, String includes, String excludes) {
		if (directory == null) {
			throw new NullPointerException("'directory' must not be null");
		}
		
		if (! directory.exists()) {
			throw new IllegalArgumentException("'directory' dose not exists");
		}
		
		if (directory.isFile()) {
			throw new IllegalArgumentException("'directory' is not a directory'");
		}
		
		if (dest == null) {
			throw new NullPointerException("'dest' must not be null");
		}
		
		if (dest.isDirectory()) {
			throw new IllegalArgumentException("'dest' is not a file'");
		}
		
		Project project = new Project();
		Zip zip = new Zip();
		zip.setEncoding(encoding);
		zip.setProject(project);
		zip.setDestFile(dest);
		
		FileSet fileSet = new FileSet();
		fileSet.setProject(project);
		fileSet.setDir(directory);
		
		if (null != includes) {
			fileSet.setIncludes(includes);
		}
		
		if (null != excludes) {
			fileSet.setExcludes(excludes);
		}
		
		zip.addFileset(fileSet);
		zip.execute();
	}
}
分享到:
评论
2 楼 yingzhor 2012-05-23  
呵呵。 是啊。 JDK的zip工具包有bug的,好像。
1 楼 wait8712 2012-05-23  
我最常用的是org.apache.tools.zip.*这里面的包,最主要的是还能解决乱码,共勉之

相关推荐

    Swift 实现 Zip 压缩和解压缩的库.zip

    Swift 语言在开发 iOS、macOS、watchOS 和 tvOS 应用时提供了丰富的功能,但原生标准库并未包含对 ZIP 压缩和解压缩的直接支持。因此,开发者通常会借助第三方库来实现这一功能。"Swift 实现 Zip 压缩和解压缩的库....

    swift-Swift实现Zip压缩和解压缩的库

    `swift-Swift实现Zip压缩和解压缩的库`这个主题就是关于如何在Swift中利用第三方库来执行这些任务。 在Swift中,有一个名为`Zip`的开源库,由开发者Marmelroy维护。这个库提供了简单易用的API,使得在Swift项目中...

    wince下ZIP压缩和解压缩的源码

    在Windows CE(简称WinCE)环境下,开发人员经常需要处理ZIP文件的压缩和解压缩操作。ZIP是一种广泛使用的文件归档格式,它允许将多个文件和目录打包成一个单一的可传输或存储的文件。本篇文章将深入探讨在WinCE系统...

    使用ant实现zip压缩和解压缩 一

    本篇文章将深入探讨如何使用Ant实现ZIP文件的压缩和解压缩。 首先,Ant是基于XML的,因此我们需要在项目中创建一个名为`build.xml`的配置文件,这个文件包含了所有构建任务的定义。对于ZIP压缩,我们可以使用`&lt;zip&gt;...

    ava支持的zip压缩和解压缩

    zip扮演着归档和压缩两个角色;gzip并不将文件归档,仅只是对单个文件进行压缩,所以,在UNIX平台上,命令tar通常用来创建一个档案文件,然后命令gzip来将档案文件压缩。 Java I/O类库还收录了一些能读写压缩格式流...

    一个基于C#实现的数据信息ZIP压缩与解压包装类源码及例子程序

    对于C#开发者来说,理解如何利用.NET框架中的库来实现ZIP压缩和解压缩功能是十分重要的。本篇文章将详细探讨基于C#实现的ZIP压缩与解压缩包装类,并提供相关的源码和实例程序。 ZIP是一种广泛使用的文件格式,它...

    zip压缩算法

    在编程中实现ZIP压缩和解压缩,可以使用开源库如Java的`java.util.zip`包,C#的`System.IO.Compression`命名空间,或者Python的`zipfile`模块。这些库已经实现了ZIP格式和Deflate算法,开发者只需要调用相应的API...

    VB6.0源代码编写的调用压缩软件rar,压缩和解压按路径指定的picture图片文件App.Path & "\pic.bmp"

    在VB6.0编程环境中,开发人员经常需要处理文件的压缩和解压缩操作,以便于存储、传输或者备份数据。本篇文章将详细讲解如何利用VB6.0源代码调用RAR压缩软件,来实现对指定图片文件(如"pic.bmp")的压缩和解压功能。...

    压缩和解压缩ZIP

    压缩和解压缩类,添加到项目就可以了。方法直接传参数就可以完成压缩和解压缩。 注意的是必须用ZIP压缩工具压缩的文档才能解压。改后缀是不行的。

    (JAVA)利用Java实现zip压缩.解压缩.rar_decompress rar java_zip 压缩

    在Java编程语言中,我们...总的来说,Java中的ZIP压缩和解压缩功能强大且易于使用,是开发人员处理文件压缩需求的首选工具。通过熟练掌握`java.util.zip`包,你可以轻松地在Java应用程序中实现文件的压缩和解压缩功能。

    WinCE ZIP 压缩解压缩源代码

    本文将深入探讨基于C++实现的WinCE系统上的ZIP压缩和解压缩源代码,以及相关的关键知识点。 首先,我们要理解ZIP是一种广泛使用的文件压缩格式,它能够将多个文件打包成一个单一的ZIP档案,同时进行压缩,节省存储...

    JavaScript 实现的 zip 压缩和解压缩工具包Zip.js使用详解

    JavaScript实现的zip压缩和解压缩工具包Zip.js使用详解 Zip.js是一款用JavaScript编写的前端压缩和解压缩库,它允许开发者在不依赖后端的情况下,在网页端直接创建ZIP格式的压缩文件。这在许多应用场景中非常实用,...

    标准zip压缩解压缩DLL库

    - `zipdll.dll` 是核心的动态链接库文件,其中包含了实现ZIP压缩和解压缩功能的函数。 - `zipdll.lib` 是静态库文件,通常用于编译链接阶段,为编译器提供关于DLL函数的导入信息。 - `ReadMe.txt` 很可能是包含了...

    各种zip压缩解压缩源码集合

    这里我们将详细探讨zip压缩和解压缩的核心原理以及如何在这些技术栈中应用它们。 首先,zip是一种广泛使用的文件格式,用于将多个文件和目录打包成一个单一的可压缩文件。它采用了一种叫做Deflate的压缩算法,该...

    在iOS使用ZipArchive压缩和解压缩文件

    本文将详细介绍如何使用ZipArchive进行文件的压缩和解压缩。 ### 1. ZipArchive简介 ZipArchive是一个Objective-C类库,专门用于处理ZIP档案。它支持创建新的ZIP文件、添加文件到已有的ZIP文件以及从ZIP文件中提取...

    C#实现压缩解压zip文件源代码

    在C#编程环境中,处理文件压缩和解压缩是常见的任务,尤其在数据传输、存储优化等...以上就是关于C#实现ZIP压缩和解压缩的主要知识点。理解并掌握这些内容,开发者就能灵活地在C#项目中实现文件的压缩和解压缩功能。

    字符串zip压缩和解压缩的功能

    字符串zip压缩和解压缩的功能源码,源码zipAndUnzip,iOS上进行字符串的zip压缩和解压缩,不是文件哦,喜欢的朋友可以看看先。this is zip string or unzip data.

    SQL Server CLR 存储过程实现数据的ZIP压缩和解压

    在本篇文章中,我们将深入探讨如何利用SQL Server CLR实现数据的ZIP压缩和解压缩,以及其背后的原理和优势。 首先,理解CLR是什么至关重要。CLR是.NET Framework的一部分,它为托管代码提供了运行时环境,包括内存...

    MyZipConsole:使用 Qt 4 的 zip 压缩和解压缩命令行工具

    MyZipConsole的核心功能是对文件和文件夹进行zip压缩和解压缩。在C++中,可以使用第三方库如zlib或minizip来实现ZIP格式的处理。zlib是基础的压缩库,提供了数据压缩和解压缩功能,而minizip则在其之上提供了对ZIP...

    window平台下c++ 对zip压缩解压缩工程源代码

    这个压缩包提供的是一套基于C++实现的ZIP压缩和解压缩工程源代码,它支持通过JSON格式的字符串来处理多个文件或目录的压缩与解压缩操作。这对于数据传输、备份或者存储优化等场景非常实用。 首先,我们要理解ZIP...

Global site tag (gtag.js) - Google Analytics