Apache Ant包进行ZIP文件压缩
许多年前就遇到过这种业务,对ZIP标准压缩文件解压。之前写的操作类现在找不到了,最近项目中又要处理这种业务,所以重新写了一个。Java提供了处理ZIP包的API。但是对中文支持不是很好,所以我直接用Apache Ant里的ZIP操作API来进行处理。ANT的API解决了中文支持问题,而且用起来也非常方便。以下是操作类。
以下的类只是用到Apache的一小部分功能。具体更多的API,请参考文档。在此不多说明了。
* 在项目中导入Apache的ant.jar包到Lib中。
/*
* All rights reserved.
* @author: JODY
* @Date: 2008-05-27
* @Time: 0:15:04
*/
package cn.com.jody.util;
import java.io.File;
import java.io.FileOutputStream;
import java.io.InputStream;
import org.apache.tools.zip.ZipEntry;
/*
* <p>
* 功能描述 标准ZIP文件解压缩<br>
* 支持中文目录、文件名<br>
* 无限级目录结构
* </p>
* 文件名称:ExtractZIP.java<br>
* 类型名称:ExtractZIP<br>
* @author: JODY
*/
public class ExtractZIP {
public ExtractZIP(){
}
/**
* 解压静态方法
* @param zipFileName
* @param outputDirectory
* @throws Exception
*/
public static void extract(String zipFileName,String outputDirectory) throws Exception{
try {
org.apache.tools.zip.ZipFile zipFile = new org.apache.tools.zip.ZipFile(zipFileName);
java.util.Enumeration e = zipFile.getEntries();
org.apache.tools.zip.ZipEntry zipEntry = null;
while (e.hasMoreElements()){
zipEntry = (ZipEntry)e.nextElement();
//System.out.println("unziping "+zipEntry.getName());
if (zipEntry.isDirectory()){
String name=zipEntry.getName();
name=name.substring(0,name.length()-1);
mkDirs(outputDirectory+File.separator+name);
//System.out.println("创建目录:"+outputDirectory+File.separator+name);
}else{
String name=zipEntry.getName();
String dir = name.substring(0,name.lastIndexOf("/"));
mkDirs(outputDirectory+File.separator+dir);
//System.out.println("创建文件:"+outputDirectory+File.separator+name);
File f=new File(outputDirectory+File.separator+zipEntry.getName());
f.createNewFile();
InputStream in = zipFile.getInputStream(zipEntry);
FileOutputStream out=new FileOutputStream(f);
int c;
byte[] by=new byte[1024];
while((c=in.read(by)) != -1){
out.write(by,0,c);
}
out.close();
in.close();
}
}
}
catch (Exception ex){
System.out.println("解压文件异常"+ex.getMessage());
ex.printStackTrace();
}
}
/**
* 创建目录,包括子目录
* @param dir
* @throws Exception
*/
private static void mkDirs(String dir) throws Exception{
if(dir == null || dir.equals("")) return;
File f1 = new File(dir);
if(!f1.exists())
f1.mkdirs();
}
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
try {
extract("D:\\开源项目\\apache\\新建文件夹.zip", "D:\\开源项目\\apache\\aa");
} catch (Exception e) {
e.printStackTrace();
}
}
}
以上代码已经测试通过,支持中文目录、文件名,不限目录级别。
分享到:
相关推荐
Apache Ant Zip 2.3.jar 是一个用于构建和管理Java项目的工具,它是Apache Ant库的一部分。Ant是一个由Apache软件基金会开发的任务驱动的构建系统,它使用XML来描述构建过程和依赖关系,使得构建过程可移植且易于...
apache-ant-zip.jar包及用法 用过java做压缩或解压的都知道,jdk提供的zip只能按UTF-8格式处理,所有jdk提供的zip不能支持中文文件名,可以采用Apache的zip包解决中文文件名问题。
Apache Ant 是一个开源的构建工具,广泛用于Java项目构建,由Apache软件基金会开发。这个"apache-ant-1.6.5-bin.zip"文件是Ant的1.6.5版本的二进制发行版...详细的使用方法和特性可通过提供的readme.txt文件进行查阅。
标题中的"apache-ant-1.9.9.zip"表明这是一个包含Apache Ant 1.9.9版本的压缩文件,适合在Mac终端上使用,并且已经过实际测试,确保了其兼容性和易用性。 Apache Ant的核心概念是任务(Task),这些任务是构建过程...
总的来说,利用Apache Ant的ant.jar库,无论是通过Java代码还是Ant构建文件,都能方便、高效地解压缩ZIP文件,而且对于包含中文文件名的情况,它提供了良好的支持。在实际开发中,理解并熟练运用这类工具可以极大地...
在给定的“利于apache提供的ant包压缩文件”主题中,我们可以深入探讨Ant在处理文件压缩方面的功能。 1. **Ant介绍**: Apache Ant是Apache软件基金会的一个项目,它起源于Jakarta项目,旨在替代Make工具,成为...
总结起来,Apache Ant提供了解决Java标准库在处理ZIP文件中文问题的方法,通过设置`encoding`属性,用户可以在创建和管理ZIP文件时正确处理各种编码,尤其是对于包含中文的文件名。这个特性使得Ant成为Java开发环境...
ApacheAnt是一个Java库与命令行工具,用于驱动描述在构建文件中作为互相依赖的目标与扩展点的流程。 Ant的一个主要的一致用途是构建Java应用。apache-ant-zip-2.3.jar 是 Apache Ant 的一个组件,用于处理 ZIP 文件...
Java自带的解压缩不支持中文路径,此开发包支持中文的解压缩
这个版本包含了对Zip文件格式的支持,其中`org.apache.tools.zip.ZipOutputStream`是Ant用来创建Zip压缩文件的核心类。在处理中文文件名时,可能会遇到乱码问题,这是由于字符编码不一致所导致的。 描述中提到的...
描述中的"全名:apache-ant-1.10.11-bin.zip"提示我们这是一个可执行的二进制发行版,通常包含运行Ant所需的全部文件,如jar包、脚本和其他资源。".zip"后缀表示这是一个压缩文件,需要先解压才能使用其中的内容。 ...
Apache Zip压缩类和Apache Ant Jar包是Java开发中常用的工具,它们在处理文件打包和压缩方面发挥着重要作用。Apache Commons Compress库提供了对多种压缩格式的支持,包括ZIP,而Apache Ant是一个基于Java的任务驱动...
总结起来,`java-maven-apache-ant-zip-2.3-jar包依赖`是指在Java项目中,通过Maven管理Apache Ant ZIP任务的2.3版本,为项目提供便捷的ZIP文件操作能力。开发者可以通过正确配置Maven的pom.xml文件,确保这个依赖...
Java操作Zip文件主要涉及到对文件和目录的压缩与解压缩,以及在必要时对压缩文件进行加密处理。这里我们重点讨论使用两个库:`zip4j`和`Apache Ant`来实现这些功能。 1. **zip4j库**:`zip4j-1.3.2.jar`是一个用...
在标题中提到的"apache-ant-1.10.5.rar"是一个包含Ant 1.10.5版本的压缩文件。这个版本的Ant是在2019年发布的一个稳定版本,它提供了许多新特性和改进,使得开发者能够更高效地管理他们的Java项目。 Ant主要基于XML...
Apache Ant是一个广泛使用的Java构建...总的来说,Apache Ant通过提供灵活且可扩展的任务集,使开发者能够轻松地处理各种构建任务,包括解压ZIP文件。了解如何配置和使用Ant,可以帮助提高Java开发的效率和自动化程度。
import org.apache.tools.zip.ZipEntry; import org.apache.tools.zip.ZipFile; import org.apache.tools.zip.ZipOutputStream;...需要的jar包,压缩zip包和解压zip包,远程打包,文件批量下载、文件批量上传
标题中的"apache-ant-1.9.7-bin.zip"指的是Apache Ant的1.9.7版本的二进制发行版,通常包含所有运行Ant所需的可执行文件和库。 描述中的重复内容可能是个错误,但我们可以理解为对Apache Ant的强调。Apache Ant ...
7-Zip提供了命令行工具7z.exe,可以方便地对文件进行压缩和解压。对于tar.gz文件,7-Zip会先解压gz格式,然后处理tar归档。要解压一个名为"example.tar.gz"的文件,可以在命令行输入以下命令: ```shell 7z x ...
总的来说,"ant-zip-1.7.1.jar.zip"是一个包含Apache Ant ZIP任务实现的压缩文件,便于开发者在Java项目中进行ZIP文件的操作。同时,提供的许可文件确保了合法合规的使用。在实际应用中,开发者会将这个JAR文件添加...