`
log_cd
  • 浏览: 1100183 次
  • 性别: Icon_minigender_1
  • 来自: 成都
社区版块
存档分类
最新评论

使用ant.jar进行文件zip压缩

阅读更多
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;
import org.apache.tools.zip.ZipOutputStream;

/**
 * 功能: 
 * 1 、实现把指定文件夹下的所有文件压缩为指定文件夹下指定 zip 文件 
 * 2 、实现把指定文件夹下的 zip 文件解压到指定目录下
 */

public class ZipUtils {

	public static void main(String[] args) {

		zip ("D:\\zip测试", "D:\\测试结果.zip");

		unZip("D:\\测试结果.zip", "D:\\解压结果");

	}

	/**
	 * 功能:把 sourceDir 目录下的所有文件进行 zip 格式的压缩,保存为指定 zip 文件
	 * @param sourceDir
	 * @param zipFile
	 */

	public static void zip(String sourceDir, String zipFile) {

		OutputStream os;

		try {

			os = new FileOutputStream(zipFile);

			BufferedOutputStream bos = new BufferedOutputStream(os);

			ZipOutputStream zos = new ZipOutputStream(bos);

			File file = new File(sourceDir);

			String basePath = null;

			if (file.isDirectory()) {

				basePath = file.getPath();

			} else {//直接压缩单个文件时,取父目录

				basePath = file.getParent();

			}

			zipFile(file, basePath, zos);

			zos.closeEntry();

			zos.close();

		} catch (Exception e) {

			e.printStackTrace();

		}

	}

	/**
	 * 功能:执行文件压缩成zip文件
	 * @param source
	 * @param basePath  待压缩文件根目录
	 * @param zos
	 */

	private static void zipFile(File source, String basePath,

	ZipOutputStream zos) {

		File[] files = new File[0];

		if (source.isDirectory()) {

			files = source.listFiles();

		} else {

			files = new File[1];

			files[0] = source;

		}

		String pathName;//存相对路径(相对于待压缩的根目录)

		byte[] buf = new byte[1024];

		int length = 0;

		try {

			for (File file : files) {

				if (file.isDirectory()) {

					pathName = file.getPath().substring(basePath.length() + 1)

					+ "/";

					zos.putNextEntry(new ZipEntry(pathName));
					
					zipFile(file, basePath, zos);

				} else {

					pathName = file.getPath().substring(basePath.length() + 1);

					InputStream is = new FileInputStream(file);

					BufferedInputStream bis = new BufferedInputStream(is);

					zos.putNextEntry(new ZipEntry(pathName));

					while ((length = bis.read(buf)) > 0) {

						zos.write(buf, 0, length);

					}

					is.close();

				}

			}

		} catch (Exception e) {

			e.printStackTrace();

		}

	}

	/**
	 * 功能:解压 zip 文件,只能解压 zip 文件
	 * @param zipfile
	 * @param destDir
	 */

	public static void unZip(String zipfile, String destDir) {

		destDir = destDir.endsWith("\\") ? destDir : destDir + "\\";

		byte b[] = new byte[1024];

		int length;

		ZipFile zipFile;

		try {

			zipFile = new ZipFile(new File(zipfile));

			Enumeration enumeration = zipFile.getEntries();

			ZipEntry zipEntry = null;

			while (enumeration.hasMoreElements()) {

				zipEntry = (ZipEntry) enumeration.nextElement();

				File loadFile = new File(destDir + zipEntry.getName());

				if (zipEntry.isDirectory()) {

					loadFile.mkdirs();

				} else {

					if (!loadFile.getParentFile().exists()){

						loadFile.getParentFile().mkdirs();
						
					}

					OutputStream outputStream = new FileOutputStream(loadFile);

					InputStream inputStream = zipFile.getInputStream(zipEntry);

					while ((length = inputStream.read(b)) > 0)

						outputStream.write(b, 0, length);

				}

			}

		} catch (IOException e) {

			e.printStackTrace();

		}

	}

}

  • ant.jar (1.2 MB)
  • 下载次数: 820
分享到:
评论
5 楼 jiaoqf321456 2016-06-21  
这明明是用的apache的压缩,给ant.jar有半毛钱关系吗,中文目录出现乱码时转码就行了
4 楼 jiaoqf321456 2016-06-21  
这明明用的是apache的压缩,给ant.jar有半毛钱关系吗,中文名称乱码,添加转码就行了
3 楼 jiutianzhifeng 2014-06-12  
非常好,我试了一下,没有乱码的问题。
2 楼 weict1988 2011-04-05  
我就说一句话,非常好!!!我转载了哦,我会注明转载的链接的
1 楼 kevinwong 2010-06-20  
当目录下有中文文件时 中文文件名和目录还是乱码

相关推荐

    利用ant.jar解压缩zip包

    此外,如果你需要在命令行环境中使用ant.jar,可以编写一个简单的Ant构建文件(build.xml),并使用`unzip`任务来解压缩ZIP文件。例如: ```xml <project name="UnzipExample" basedir="." default="unzip"> ...

    findbugs压缩包+findbugs.jar+findbugs-ant.jar

    从压缩包子文件的文件名称列表来看,除了已知的`findbugs.jar`和`findbugs-ant.jar`外,还有`edu.umd.cs.findbugs.plugin.eclipse_3.0.1.20150306-5afe4d1.zip`。这是一个Eclipse插件的版本,它使得FindBugs可以直接...

    ant.jar.zip

    标题中的"ant.jar.zip"指的是包含Ant库的压缩文件,该文件是Java开发人员进行自动化构建过程所必需的。Ant的核心是一个名为"ant.jar"的JAR(Java Archive)文件,它是Apache Ant项目的主要组件,而"ant.license.txt...

    ant.jar 压缩解压缩需要的包

    ant.jar 压缩解压缩需要的包,在我博客里看到的可以再这里下载。

    ant-zip-1.7.1.jar.zip

    总的来说,"ant-zip-1.7.1.jar.zip"是一个包含Apache Ant ZIP任务实现的压缩文件,便于开发者在Java项目中进行ZIP文件的操作。同时,提供的许可文件确保了合法合规的使用。在实际应用中,开发者会将这个JAR文件添加...

    基于ant.jar的文件压缩工具类

    本文将深入探讨如何利用ant.jar中的API创建一个自定义的文件压缩工具类,实现对文件和目录的zip与unzip操作,并关注编码设置的重要性。 首先,我们需要导入ant.jar库到项目中。在Java中,我们可以通过Maven或Gradle...

    ant-dependencies.jar.zip

    总结,"ant-dependencies.jar.zip"是一个包含了Ant运行所必需的依赖库的压缩文件,配合"ant.license.txt",为开发者提供了一个便捷、合规的方式来使用和集成Apache Ant。理解和掌握Ant的使用,以及依赖库的管理,...

    ant.jar,用于ant压缩文件(zip格式)

    用于ant压缩文件(zip格式),ant.jar

    ant-launcher.jar.zip

    标题中的"ant-launcher.jar.zip"是一个包含Ant启动器(Ant Launcher)的压缩文件,用于支持Ant的执行。本文将详细探讨Ant构建工具及其核心组件Ant-Launcher.jar,以及如何使用和理解这个zip包。 Ant是Apache软件...

    java zip 压缩 解压缩 附带ant.jar

    在本主题中,我们将深入探讨如何使用Java来对文件进行zip压缩和解压缩,并提及`ant.jar`的作用。 首先,让我们来看一下`JavaZip.java`这个文件。它很可能包含了一个示例程序,演示了如何使用Java API来压缩和解压缩...

    antlr3-ant.jar.zip

    在本案例中,我们关注的是`antlr3-ant.jar.zip`这个压缩文件,它包含了ANTLR与Apache Ant集成的特定库。 标题"antlr3-ant.jar.zip"表明这是一个包含ANTLR 3版本与Apache Ant集成的JAR文件的压缩包。`antlr3`指的是...

    apache-ant-zip-2.3.jar.zip

    Apache Ant Zip 2.3.jar 特别关注的是处理ZIP文件格式的操作,包括创建、解压和操作ZIP档案中的文件。这个特定的版本2.3可能包含了一些特定的修复或功能改进相对于之前的版本。由于在Maven仓库中找不到这个特定的...

    ant-bootstrap.jar.zip

    标题中的"ant-bootstrap.jar.zip"是一个压缩文件,它包含了与Apache Ant和Bootstrap相关的资源。Apache Ant是一个由Apache软件基金会开发的Java库和命令行工具,主要用于构建Java项目。它的核心概念是基于XML的构建...

    ant.jar java工具

    本篇文章将深入探讨`ant.jar`的用途、功能以及如何在Java项目中使用它来优化文件压缩操作。 `ant.jar`是Apache Ant的核心库,Ant是一个基于Java的构建工具,广泛用于自动化Java项目的构建、测试和部署过程。这个...

    ant-antlr.jar.zip

    在实际使用"ant-antlr.jar.zip"时,开发者首先需要解压缩该文件,获取"ant-antlr.jar"和"ant.license.txt"。然后,在构建脚本中引入"ant-antlr.jar",这样Ant就可以识别并处理ANTLR相关的任务。例如,如果你有一个...

    ant-weblogic-1.6.1.jar.zip

    描述中提到的“ant,weblogic,1.6.1,jar.zip包下载,依赖包”表明这个压缩文件可能是一个开发者使用的工具,他们需要下载这个包来支持他们的Ant构建过程,并且这个包自身可能依赖于其他的一些库或组件。"jar.zip"通常...

    ant-1.5.4.jar.zip

    总结一下,"ant-1.5.4.jar.zip"是一个包含Apache Ant 1.5.4版本及其可能的依赖的压缩文件,其中"ant.license.txt"提供了使用许可信息,而"ant-1.5.4.jar"是Ant的核心执行文件。在使用这个压缩包时,你需要阅读许可证...

    ant-jme.jar.zip

    标题“ant-jme.jar.zip”指的是一个压缩文件,其中包含了两个关键元素:ant-jme.jar和ant.license.txt。这个文件主要与Java开发工具有关,特别是Apache Ant和Java Micro Edition (JME)。 Apache Ant是一个Java库和...

    ant-netrexx.jar.zip

    标题中的"ant-netrexx.jar.zip"是一个压缩文件,它包含了一个名为"ant-netrexx.jar"的Java档案(JAR)文件以及一个名为"ant.license.txt"的许可协议文本文件。这个压缩包主要与Apache Ant项目相关,Ant是一个在Java...

    ant-appportal-0.1.jar.zip

    "jar.zip"再次确认了文件格式,即Java Archive(JAR)文件被ZIP压缩。"依赖包"暗示了这个JAR文件可能依赖于其他外部库,这些库可能需要在运行时一同提供。 "ant.license.txt"文件通常包含软件的许可信息,这可能是...

Global site tag (gtag.js) - Google Analytics