`
1000
  • 浏览: 27358 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

java压缩、解压Zip

阅读更多
package test;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipInputStream;
import java.util.zip.ZipOutputStream;

public class TestZip {
	public void zip(String zipFileName, String inputFile) throws Exception {
		zip(zipFileName, new File(inputFile));
	}

	public void zip(String zipFileName, File inputFile) throws Exception {
		ZipOutputStream out = new ZipOutputStream(new FileOutputStream(
				zipFileName));
		zip(out, inputFile, "");
		System.out.println("zip done");
		out.close();
	}

	public void unzip(String zipFileName, String outputDirectory)
			throws Exception {
		ZipInputStream in = new ZipInputStream(new FileInputStream(zipFileName));
		ZipEntry z;
		while ((z = in.getNextEntry()) != null) {
			System.out.println("unziping " + z.getName());
			if (z.isDirectory()) {
				String name = z.getName();
				name = name.substring(0, name.length() - 1);
				File f = new File(outputDirectory + File.separator + name);
				f.mkdir();
				System.out.println("mkdir " + outputDirectory + File.separator
						+ name);
			} else {
				File f = new File(outputDirectory + File.separator
						+ z.getName());
				f.createNewFile();
				FileOutputStream out = new FileOutputStream(f);
				int b;
				while ((b = in.read()) != -1)
					out.write(b);
				out.close();
			}
		}

		in.close();
	}

	public void zip(ZipOutputStream out, File f, String base) throws Exception {
		System.out.println("Zipping " + f.getName());
		if (f.isDirectory()) {
			File[] fl = f.listFiles();
			out.putNextEntry(new ZipEntry(base + "/"));
			base = base.length() == 0 ? "" : base + "/";
			for (int i = 0; i < fl.length; i++) {
				zip(out, fl[i], base + fl[i].getName());
			}
		} else {
			out.putNextEntry(new ZipEntry(base));
			FileInputStream in = new FileInputStream(f);
			int b;
			while ((b = in.read()) != -1)
				out.write(b);
			in.close();
		}

	}

	public static void main(String[] args) {
		try {
			TestZip t = new TestZip();
			t.zip("e:\\test.zip", "D:\\images\\A100000000230");
			// t.unzip("e:\\test.zip", "e:\\test2");
		} catch (Exception e) {
			e.printStackTrace(System.out);
		}
	}
}

 

package test;

import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.util.zip.Adler32;
import java.util.zip.CheckedOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class OperFile {

	public void zipFold(File unzipf, File zipf) throws Exception {// unzipf是待压缩的文件,zipf是压缩后的文件
		FileOutputStream fos;
		CheckedOutputStream csum;
		ZipOutputStream out;// 新定义的
		int index;
		if (!unzipf.exists())
			return;
		else {
			fos = new FileOutputStream(zipf);
			csum = new CheckedOutputStream(fos, new Adler32());
			out = new ZipOutputStream(new BufferedOutputStream(csum));
			index = unzipf.toString().lastIndexOf("\\");
			zipF(unzipf, out, index);
			out.close();
		}

		return;
	}

	public void zipF(File f, ZipOutputStream out, int index) throws Exception {
		if (f.isFile()) {
			FileInputStream in = new FileInputStream(f);
			String etr = f.toString().substring(index + 1);
			out.putNextEntry(new ZipEntry(etr));
			byte[] b = new byte[4096];
			int byte_read;
			while ((byte_read = in.read(b)) != -1)
				out.write(b, 0, byte_read);
			in.close();
			return;

		} else {
			ZipEntry ze = new ZipEntry(f.toString().substring(index + 1) + "/");
			out.putNextEntry(ze);
			File[] fs = f.listFiles();
			if (fs != null)
				for (int i = 0; i < fs.length; i++)
					zipF(fs[i], out, index);
		}
	}// zipF()定义完毕

	public static void main(String args[]) {
		OperFile o = new OperFile();
		try {
			o.zipFold(new File("D:\\images"), new File("E:\\test.zip"));
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
	}
}

 

分享到:
评论
1 楼 gaozi131 2010-08-31  
特意感谢下楼主 跑了你的代码 非常不错  多谢分享 

相关推荐

    java压缩解压ZIP

    java压缩解压ZIP

    Java压缩解压ZIP之Zip4j

    这篇博客文章“Java压缩解压ZIP之Zip4j”可能详细介绍了如何使用Zip4j进行文件的压缩和解压缩操作。 首先,我们需要了解Zip4j库的核心概念。Zip4j提供了一个名为`ZipFile`的类,它代表一个ZIP文件,包含了所有与ZIP...

    用Java压缩解压ZIP文件

    用Java压缩解压ZIP文件,将利用java.util.zip 包中提供的类来实现压缩和解压zip 格式文件的功能。当然,本例在功能上完全没有Winzip 等成熟的压缩软件那么强,也不能做的很强,本例仅仅是演示如何来使用java.util....

    java将文件夹压缩成zip,解压zip压缩包

    解压ZIP文件的过程相对简单,主要使用`ZipInputStream`和`FileOutputStream`。以下是解压的基本步骤: 1. **创建`ZipInputStream`**:使用`FileInputStream`打开ZIP文件,然后传递给`ZipInputStream`。 2. **读取`...

    java解压zip压缩文件

    在Java编程环境中,解压ZIP压缩文件是一项常见的任务,它涉及到文件I/O操作以及对ZIP文件格式的理解。本文将深入探讨如何使用Java实现这一功能,同时也会提及`UnZip.java`和`UnZip2.java`这两个文件可能包含的实现...

    JAVA解压ZIP格式的压缩包_java解压缩_zip_

    本文将深入探讨如何使用Java来解压ZIP格式的压缩包,并提供相关的源码参考。 首先,我们需要了解Java中的`java.util.zip`包,这个包提供了处理压缩文件的基本工具。在ZIP格式的压缩包处理中,我们主要会用到`...

    Java实现的带密码压缩与解压zip文件源码

    `ZipOutputStream`用于创建ZIP文件,而`ZipInputStream`则用于读取和解压ZIP文件。为了添加密码保护,我们需要在创建`ZipOutputStream`时设置一个密码。 1. **密码保护**:在压缩过程中,可以使用`ZipEntry`对象来...

    JAVA解压ZIP多层目录文件(需ant.jar

    ### JAVA解压ZIP多层目录文件(需ant.jar) #### 概述 本文将详细介绍一个Java方法,该方法用于解压包含多层目录结构的ZIP文件,并能够支持中文文件名。这种方法利用了Apache Ant库中的`org.apache.tools.zip....

    Java实现Zip的压缩和解压

    NULL 博文链接:https://zhenyong.iteye.com/blog/1576148

    java实现的解压与压缩 zip和rar类型的

    本文将深入探讨如何使用Java实现ZIP和RAR类型的压缩与解压操作,以及相关知识点。 首先,我们来看ZIP文件格式。ZIP是一种广泛使用的文件压缩格式,其在Java中的处理主要通过`java.util.zip`包。这个包提供了多个类...

    java 操作Zip文件(压缩、解压、加密).zip

    Java操作Zip文件主要涉及到对文件和目录的压缩与解压缩,以及在必要时对压缩文件进行加密处理。这里我们重点讨论使用两个库:`zip4j`和`Apache Ant`来实现这些功能。 1. **zip4j库**:`zip4j-1.3.2.jar`是一个用...

    java 中 zip压缩文件解压工具类

    本文将深入探讨如何使用Java来处理ZIP文件,特别是针对标题所提及的“java 中 zip压缩文件解压工具类”。我们将讨论核心的Java API,如`java.util.zip`包中的类,并通过一个名为`CompressFileUtils`的工具类来展示...

    java压缩zip文件解决中文乱码问题

    在Java编程中,处理文件压缩和解压是常见的任务,特别是使用ZIP格式。然而,当涉及到包含中文字符的文件或目录时,可能会遇到乱码问题。这个问题主要源于字符编码的不一致,通常需要正确设置字符集来确保中文字符在...

    Java压缩解压zip技术_动力节点Java学院整理

    `ZipOutputStream`用于创建ZIP文件,而`ZipInputStream`则用于读取和解压ZIP文件。这两个类都继承自`FilterOutputStream`和`FilterInputStream`,它们分别提供了压缩和解压缩的基本功能。 在Java中压缩文件,主要...

    JAVA解压缩ZIP或RAR格式的文件

    在Java编程环境中,解压缩ZIP或RAR格式的文件是一项常见的任务,这主要涉及到I/O流、文件操作以及压缩和解压缩库的使用。本篇将深入讲解如何在Java中实现这个功能,同时会介绍一些相关的工具和源码。 首先,对于ZIP...

    Java压缩和解压缩zip文件

    `ZipOutputStream` 用于创建ZIP文件,而 `ZipInputStream` 则用于读取和解压ZIP文件。以下是一个简单的压缩示例: ```java import java.io.*; import java.util.zip.*; public class ZipUtil { public static ...

    使用 Java 实现的压缩/解压 ZIP 文件的工具类

    以上代码示例展示了如何使用Java的`java.util.zip`包创建和解压ZIP文件。这些工具类可以作为通用的ZIP操作函数库,适用于各种项目需求。注意,实际应用中可能需要添加错误处理和日志记录以增强健壮性。同时,对于大...

    java Zip压缩解压

    总结来说,"java Zip压缩解压"涉及了Java标准库中的`java.util.zip`包,用于创建和读取ZIP文件;Apache Ant作为构建工具,可能用于自动化压缩和解压过程;而JUnit则用于编写和运行测试,确保代码的正确实现。在实际...

    Java实现将多目录多层级文件打成ZIP包,以及解压ZIP包

    通常,这个类会包含两个核心功能:`zipFiles()`用于创建ZIP包,`unzipFile()`用于解压ZIP包。 1. **创建ZIP包(`zipFiles()`)**: - 首先,需要导入`java.util.zip`包中的`ZipOutputStream`和`ZipEntry`类,它们...

Global site tag (gtag.js) - Google Analytics