`

java 压缩、解压

 
阅读更多

1、压缩

package test;

import java.io.*;
import java.util.zip.*;

public class ZipCompressing {
	private int k = 1; // 定义递归次数变量

	private void zip(String zipFileName, File inputFile) throws Exception {
		System.out.println("压缩中...");
		ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFileName));
		BufferedOutputStream bo = new BufferedOutputStream(out);
		zip(out, inputFile, inputFile.getName(), bo);
		bo.close();
		out.close(); // 输出流关闭
		System.out.println("压缩完成");
	}

	private void zip(ZipOutputStream out, File f, String base, BufferedOutputStream bo) throws Exception { // 方法重载
		if (f.isDirectory()) {
			File[] fl = f.listFiles();
			if (fl.length == 0) {
				out.putNextEntry(new ZipEntry(base + "/")); // 创建zip压缩进入点base
				System.out.println(base + "/");
			}
			for (int i = 0; i < fl.length; i++) {
				zip(out, fl[i], base + "/" + fl[i].getName(), bo); // 递归遍历子文件夹
			}
			System.out.println("第" + k + "次递归");
			k++;
		} else {
			out.putNextEntry(new ZipEntry(base)); // 创建zip压缩进入点base
			System.out.println(base);
			FileInputStream in = new FileInputStream(f);
			BufferedInputStream bi = new BufferedInputStream(in);
			int b;
			while ((b = bi.read()) != -1) {
				bo.write(b); // 将字节流写入当前zip目录
			}
			bi.close();
			in.close(); // 输入流关闭
		}
	}

	/**
	 * 测试
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		ZipCompressing book = new ZipCompressing();
		try {
			book.zip("G:\\暂存.zip", new File("G:\\暂存"));
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

 

2、解压

package test;

import java.io.*;
import java.util.zip.*;

public class ZipDecompressing {
	public static void main(String[] args) {
		long startTime = System.currentTimeMillis();
		try {
			ZipInputStream Zin = new ZipInputStream(new FileInputStream("G:\\暂存.zip"));// 输入源zip路径
			BufferedInputStream Bin = new BufferedInputStream(Zin);
			String Parent = "G:"; // 输出路径(文件夹目录)
			File Fout = null;
			ZipEntry entry;
			try {
				while ((entry = Zin.getNextEntry()) != null && !entry.isDirectory()) {
					Fout = new File(Parent, entry.getName());
					if (!Fout.exists()) {
						(new File(Fout.getParent())).mkdirs();
					}
					FileOutputStream out = new FileOutputStream(Fout);
					BufferedOutputStream Bout = new BufferedOutputStream(out);
					int b;
					while ((b = Bin.read()) != -1) {
						Bout.write(b);
					}
					Bout.close();
					out.close();
					System.out.println(Fout + "解压成功");
				}
				Bin.close();
				Zin.close();
			} catch (IOException e) {
				e.printStackTrace();
			}
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		}
		long endTime = System.currentTimeMillis();
		System.out.println("耗费时间: " + (endTime - startTime) + " ms");
	}
}

 

分享到:
评论

相关推荐

    JAVA压缩解压JAVA压缩解压

    JAVA压缩解压JAVA压缩解压JAVA压缩解压JAVA压缩解压JAVA压缩解压

    java压缩解压文件

    java压缩解压文件

    JAVA 压缩解压AES

    在给定的项目中,"JAVA 压缩解压AES"涉及到了Java的文件压缩和解压缩技术,以及AES加密解密的实现。通过`java.util.zip`库或Apache Commons Compress库可以实现文件夹的压缩和解压缩,而AES加密则可以通过Java ...

    java压缩解压ZIP

    java压缩解压ZIP

    Java压缩解压ZIP之Zip4j

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

    Java压缩解压文件

    这篇博客文章《Java压缩解压文件》可能会详细讲解如何使用Java API来处理ZIP文件格式。 在Java中,我们可以利用内置的`java.util.zip`包来处理压缩和解压操作。`ZipOutputStream`和`ZipInputStream`是这个包中的...

    用Java压缩解压ZIP文件

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

    Java压缩解压RSA加密程序源代码

    总的来说,这个Java压缩解压RSA加密程序源代码结合了数据压缩和非对称加密两大技术,提供了一种在传输或存储数据时兼顾效率和安全性的解决方案。理解并掌握这些概念对于任何从事Java开发,尤其是涉及网络安全和数据...

    LZW实现Java压缩解压

    在Java编程环境中,我们可以利用LZW算法实现文件的压缩和解压缩功能。以下是对LZW算法及其Java实现的详细解释: 1. **LZW算法原理**: LZW算法基于词典编码思想,它通过查找或构建一个动态更新的词典来压缩数据。...

    java压缩解压工具

    java写的压缩解压缩工具 可以压缩文件文件夹,可以直接运行

    安卓java 压缩解压文件

    在安卓平台上,使用Java语言处理文件的压缩与解压是一项常见的任务,这涉及到对文件系统的操作以及对ZIP格式的理解。本文将深入探讨如何在Android环境中使用Java实现这一功能。 首先,我们要了解ZIP文件格式。ZIP是...

    Java实现Zip的压缩和解压

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

    java 压缩解压

    Java是一种广泛使用的编程语言,其在处理文件压缩和解压缩方面提供了强大的支持。在Java中,我们可以使用内置的`java.util.zip`包来实现对文件和目录的压缩与解压缩功能。这个包包含了多个类,如`ZipOutputStream`...

    Java压缩及解压tar、tar.z格式文件

    Java压缩及解压tar、tar.z格式文件, 需要apache的包ant-1.7.1.jar 这个自己去搜索下下载

    java解压和压缩tar包

    本文将详细讲解如何使用Java来解压和压缩tar包,同时解决在处理中文文件名时可能出现的乱码问题,主要关注`javatar-2.5.jar`库中的功能以及`TarUtil.java`类的应用。 首先,`javatar-2.5.jar`是一个专门用于处理tar...

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

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

    java 解压,压缩linux GZ压缩文件

    GZ是一种常用的文件压缩格式,它利用了gzip程序进行压缩,而在Java中,我们可以使用`java.util.zip`包中的类来实现对GZ文件的压缩和解压缩操作。 在给出的代码中,有两个主要的方法:`testGzipOutput()`用于解压GZ...

    实现java文件压缩与解压

    ### 实现Java文件压缩与解压 #### 一、引言 在计算机科学领域,文件压缩与解压是一项非常实用的技术。它不仅能够减少文件占用的空间,提高存储效率,还能加速文件在网络中的传输速度。Java作为一种广泛使用的编程...

    JAVA压缩与解压文件(包括子目录)

    在Java编程语言中,处理文件的压缩和解压任务是一项常见的需求。本示例着重讲解如何使用Java API来实现ZIP文件的压缩与解压功能,包括处理子目录和文件。以下将详细介绍相关知识点: 1. **Java档案API(java.util....

Global site tag (gtag.js) - Google Analytics