`

实现了ZIP【压缩】【解压】功能

阅读更多

程序实现了ZIP压缩。共分为2部分 : 压缩(compression)与解压(decompression)

大致功能包括用了多态,递归等JAVA核心技术,可以对单个文件和任意级联文件夹进行压缩和解压。

需在代码中自定义源输入路径和目标输出路径。

package com.uaes.util;

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

/**
 * @description 实现了ZIP【压缩】【解压】功能:大致功能包括用了多态,递归等JAVA核心技术,可以对单个文件和任意级联文件夹进行压缩和解压。
 * @author King_wangyao
 * @date 2011-11-28
 * @version 1.0.0
 * 
 */
public class ZIPUtil {
	private static int k = 1; // 定义递归次数变量

	/**
	 * 指定ZIP压缩(compression)
	 * 
	 * @param zipFileName 输入完整的压缩包路径名称
	 * @param inputFile 输入将要压缩的目录
	 */
	private static void compression(String zipFileName, File inputFile) throws Exception {
		long startTime = System.currentTimeMillis();
		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("压缩完成");

		long endTime = System.currentTimeMillis();
		System.out.println("压缩耗费时间: " + (endTime - startTime) + " ms");
	}

	private static void zip(ZipOutputStream out, File f, String base, BufferedOutputStream bo) throws Exception { // 方法重载
		if (f.isDirectory()) {
			File[] fl = f.listFiles();
			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(); // 输入流关闭
		}
	}

	/**
	 * 指定ZIP解压(decompression)
	 * 
	 * @param target 输入源zip路径
	 * @param parent 输出解压目录)
	 */
	public static void decompression(String target, String parent) {
		long startTime = System.currentTimeMillis();
		System.out.println("压缩中...");
		try {
			ZipInputStream Zin = new ZipInputStream(new FileInputStream(target));// 输入源zip路径
			BufferedInputStream Bin = new BufferedInputStream(Zin);
			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");
	}

	/**
	 * 测试...
	 * @param args
	 */
	public static void main(String[] args) {
		// 自定义的zip输出路径
		String target = "C:\\TEMP\\Compression.zip";
		// 自定义的源输入路径,即要压缩的文件或文件夹
		String path = "C:\\TEMP\\student.png";
		// 自定义的解压目录
		String decompressionPath = "C:\\TEMP\\decompression";
		try {
			// 压缩测试
			compression(target, new File(path));
			// 解压测试
			decompression(target, decompressionPath);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}

}

 

程序控制台输入结果,如下图:



 

压缩、解压结果,如下图:


  • 大小: 28.3 KB
  • 大小: 63.7 KB
分享到:
评论

相关推荐

    [原]使用Ant实现zip压缩解压功能

    而`使用Ant实现zip压缩解压功能`这个文件名可能是相关的文档或说明,包含了更详细的步骤和解释。 总的来说,Apache Ant作为一个强大的构建工具,其ZIP操作功能可以帮助开发者轻松地管理项目文件,提高工作效率。...

    C语言实现Zip压缩解压.rar

    总之,C语言实现ZIP压缩解压涉及文件操作、数据压缩算法和ZIP文件格式的理解。通过学习和应用相关库,开发者可以创建自己的ZIP工具,满足特定的需求。这个过程既锻炼了C语言编程技能,也加深了对文件压缩技术的理解...

    C++ Zlib库实现zip文件压缩解压(支持递归压缩)

    本篇文章将详细介绍如何在`C++`中利用`Zlib`库实现对`zip`文件的压缩和解压,并特别关注其支持的递归压缩特性,以及如何将其与自动更新功能结合使用。 首先,我们需要理解`Zlib`库的基本原理。`Zlib`库基于`DEFLATE...

    C#实现Zip压缩解压

    你可以打开`Demos.sln`,使用Visual Studio或其他支持.NET的IDE来查看和运行代码,以更深入地学习C#中ZIP压缩解压的实现细节。 总的来说,C#为开发者提供了强大且易于使用的工具,用于处理ZIP文件的压缩和解压。...

    zip文件压缩解压源码 (c++)

    总结来说,`zip文件压缩解压源码(C++)`涉及的关键技术包括:理解zip文件格式,使用C++进行文件操作,选择和应用压缩算法,以及错误处理。通过分析和理解`XUnzip.cpp`和`XZip.cpp`,我们可以学习如何在C++环境中...

    C++实现ZIP文件解压

    在本文中,我们将深入探讨如何使用C++语言来实现ZIP文件的解压缩功能,这是一个纯C++的解决方案,不依赖于任何第三方库。这个方法在Visual C++ 6.0环境下开发并测试通过,但请注意,它可能在更新的开发环境中未经...

    qt 7zip压缩解压含进度1.1

    内容概要:qt5 调用 7zip库的压缩解压功能,且通过信号发出压缩解压的进度,主程序在bin目录中。 适用人群:qt5开发人员 适用场景:用的编译环境是qt5.12.2+vs2017,系统是windows10. lib目录中OleAut32.Lib和User32....

    ZIP压缩和解压类

    在IT行业中,文件压缩是一种常见...总结,ZIP压缩和解压是IT领域中常用的数据处理技术,理解其原理和实现方法对于日常开发工作非常重要。封装自己的ZIP处理接口可以提高代码复用性和易用性,使文件压缩和解压更加便捷。

    VB6.0调用 DLL版ZIP压缩文件夹目录和解压ZIP文件

    VB6.0调用 DLL版ZIP压缩文件夹目录和解压ZIP文件,网上很多源码不好用,所以就自己做了一个。原始代码是VC++的用VS2019编译了一个,DLL封装了下。调用很简单 '调用方法如下: 'CreateZipFileA "C:\123", "C:\123.zip...

    不错的ZIP压缩解压组件

    总的来说,这个ZIP压缩解压组件提供了一套完整的解决方案,不仅涵盖了基本的压缩和解压功能,还考虑到了安全性以及与Delphi开发环境的良好集成。对于任何需要处理ZIP文件的Delphi开发者来说,它都是一款非常实用的...

    vbs压缩和解压zip,vbs压缩zip,vbs解压zip

    Visual Basic Script(VBS)作为Windows环境中的一种常用脚本语言,支持多种文件操作功能,包括ZIP文件的压缩和解压缩。 #### 一、基础知识简介 在开始之前,我们需要了解几个基本概念: 1. **Shell.Application ...

    Delphi实现Zip压缩/解压缩

    本主题将详细介绍如何利用XE4自带的System.Zip单元来实现这一功能,并探讨如何在Delphi7中调用这些功能。 首先,`System.Zip`单元是Embarcadero Delphi XE4引入的一个重要组件,它提供了对ZIP文件格式的支持,包括...

    java版zip压缩解压代码

    `java版zip压缩解压代码`提供了在命令行环境中实现这一功能的程序。这个程序主要利用了Java的内置库,尤其是`java.util.zip`包中的类,如`ZipOutputStream`和`ZipInputStream`,来实现对文件和文件夹的ZIP压缩与解压...

    VC zip压缩解压程序

    使用VC实现zip的压缩、解压功能,支持文件、文件夹、密码。 VC use zip unzip and document compression and decompression code, support file, directory.

    AS3.0 ZIP压缩解压

    AS3.0(ActionScript 3.0)是Adobe Flash平台上的编程语言,主要用于创建交互式内容、动画和网络应用程序。...总的来说,理解和掌握AS3.0 ZIP压缩解压的原理和实践,对于开发高效、可靠的Flash应用是至关重要的。

    手机端zip压缩解压器

    本文将详细讲解手机端ZIP压缩解压器的工作原理、功能特性以及如何在移动设备上使用。 ZIP是一种常见的文件压缩格式,由菲尔·卡茨在1989年创建,其主要目的是通过算法减少文件大小,同时保持文件的完整性和可读性。...

    VC++关于ZIP压缩解压压缩(支持带密码并修复带密码解压的Bug)

    这里只提供4个文件,zip.h,zip.cpp,unzip.h,unzip.cpp。 在VC6.0中,LONGLONG的报错,并修复了HZIP解压带有密码的压缩包,少了12个字节的错误。具体例子在头文件里有。 可以参考文章:...

    易语言zip解压

    在易语言中处理ZIP压缩文件是一项常见的任务,这涉及到文件的压缩与解压缩操作。本篇文章将详细讲解如何使用易语言来实现ZIP文件的解压功能,以及如何读取ZIP目录和特定的ZIP文件。 首先,我们要理解ZIP文件格式。...

    ZIP压缩解压器.mrp

    《深入理解ZIP压缩解压技术及其应用》 ZIP文件格式是一种广泛使用的数据压缩和归档格式,它允许用户将多个文件或目录打包成一个单一的ZIP文件,方便存储、传输和分享。ZIP压缩解压器作为处理这种格式的工具,其高效...

    zip压缩解压的源代码

    7. **性能优化**:在实现zip压缩解压时,代码效率也是重要考虑因素。优化可能包括并行处理、内存管理策略和计算资源的高效利用。 8. **安全性**:现代的压缩工具还需要考虑加密功能,确保数据的安全性。例如,PKCS#...

Global site tag (gtag.js) - Google Analytics