`

java实现zip文件压缩和解压

    博客分类:
  • J2SE
 
阅读更多

       最近项目中要使用到有关zip文件的压缩和解压的功能,当然了,这些linux或者cmd命令可以轻松实现,但是LZ试着写了一个java版本的工具类,用起来还不错,有需要的童鞋可以直接拿来用,代码开路。

package com.feng.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipException;
import java.util.zip.ZipFile;
import java.util.zip.ZipOutputStream;


/**
 * 
 * @version 1.0
 * @since 2015-9-11
 * @category com.feng.util
 *
 */
public final class ZipUtil
{

	/**
	 * 缓冲大小
	 */
	private static int BUFFERSIZE = 2 << 10;
	
	/**
	 * 压缩
	 * @param paths
	 * @param fileName
	 */
	public static void zip(String[] paths, String fileName)
	{
		
		ZipOutputStream zos = null;
		try
		{
			zos = new ZipOutputStream(new FileOutputStream(fileName));
			for(String filePath : paths)
			{
				//递归压缩文件
				File file = new File(filePath);
				String relativePath = file.getName();
				if(file.isDirectory())
				{
					relativePath += File.separator;
				}
				zipFile(file, relativePath, zos);
			}
		}
		catch (IOException e)
		{
			e.printStackTrace();
		}
		finally
		{
			try
			{
				if(zos != null)
				{
					zos.close();
				}
			}
			catch (IOException e)
			{
				e.printStackTrace();
			}
		}
	}
	
	public static void zipFile(File file, String relativePath, ZipOutputStream zos)
	{
		InputStream is = null;
		try
		{
			if(!file.isDirectory())
			{
				ZipEntry zp = new ZipEntry(relativePath);
				zos.putNextEntry(zp);
				is = new FileInputStream(file);
				byte[] buffer = new byte[BUFFERSIZE];
				int length = 0;
				while ((length = is.read(buffer)) >= 0)
				{
					zos.write(buffer, 0, length);
				}
				zos.flush();
				zos.closeEntry();
			}
			else
			{
		        	String tempPath = null;
          			for(File f: file.listFiles())
    				{
           				tempPath = relativePath + f.getName();
           				if(f.isDirectory())
           				{
            					tempPath += File.separator;
           				}
           				zipFile(f, tempPath, zos);
    				}
			}
		}
		catch (IOException e)
		{
			e.printStackTrace();
		}
		finally
		{
			try
			{
				if(is != null)
				{
					is.close();
				}
			}
			catch (IOException e)
			{
				e.printStackTrace();
			}
		}
	}
	
	/**
	 * 解压缩
	 * @param fileName
	 * @param path
	 */
	public static void unzip(String fileName, String path)
	{
		FileOutputStream fos = null;
		InputStream is = null;
		try
		{
			ZipFile zf = new ZipFile(new File(fileName));
			Enumeration en = zf.entries();
			while (en.hasMoreElements())
			{
				ZipEntry zn = (ZipEntry) en.nextElement();
				if (!zn.isDirectory())
				{
					is = zf.getInputStream(zn);
					File f = new File(path + zn.getName());
					File file = f.getParentFile();
					file.mkdirs();
					fos = new FileOutputStream(path + zn.getName());
					int len = 0;
					byte bufer[] = new byte[BUFFERSIZE];
					while (-1 != (len = is.read(bufer)))
					{
						fos.write(bufer, 0, len);
					}
					fos.close();
				}
			}
		}
		catch (ZipException e)
		{
			e.printStackTrace();
		}
		catch (IOException e)
		{
			e.printStackTrace();
		}
		finally
		{
			try
			{
				if(null != is)
				{
					is.close();
				}
				if(null != fos)
				{
					fos.close();
				}
			}
			catch (IOException e)
			{
				e.printStackTrace();
			}
		}
	}
	
	/**
	 * @param args
	 */
	public static void main(String[] args)
	{
		zip(new String[] {"D:/A/feng/feng/src/com/feng/util/ZipUtil.java","D:/A/feng/feng/src/com/feng/test"}, "E:/test/test.zip");
		unzip("E:/test/test.zip", "E:/test/");
	}
}

 

1
1
分享到:
评论

相关推荐

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

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

    Java实现Zip的压缩和解压

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

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

    在Java编程环境中,处理压缩和解压缩文件是一...以上是关于Java实现带密码的ZIP文件压缩和解压的基本概念和实现细节。通过深入理解这些知识点,开发者可以构建自己的安全文件处理工具,满足对数据隐私和安全性的需求。

    java解压zip压缩文件

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

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

    本文将深入探讨如何使用Java实现ZIP文件的压缩与解压,重点讲解核心API,如`java.util.zip`包中的`ZipOutputStream`和`ZipInputStream`。 首先,我们来了解一下ZIP文件格式。ZIP是一种用于存储多个文件到一个单一...

    详解Java无需解压直接读取Zip文件和文件内容

    Java无需解压直接读取Zip文件和文件内容是Java语言中的一种常见操作,通过使用java.util.zip包中的ZipFile、ZipInputStream和ZipEntry类,我们可以轻松地读取Zip文件和文件内容。下面,我们将详细介绍如何使用Java...

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

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

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

    总结起来,Java通过Apache Commons Compress库提供的API,可以方便地实现多层级目录的文件压缩和解压。`FileUtils.java`类是这个功能的具体实现,它封装了上述的压缩和解压过程,使开发者能够轻松地在代码中调用这些...

    Java实现文件的压缩和解压

    基于GUI用IO流中的ZipOutputStream ,ZipInputStream实现文件的解压与压缩, 如文件解压函数如下 private void unZip(String zipFileName, String outputDirectory)throws Exception { InputStream in=null; ...

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

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

    java 文件zip 压缩与解压

    java 文件zip 压缩与解压 可以直接调用

    JAVA文件压缩与解压缩实践,java解压缩zip文件,Java源码.zip

    在压缩和解压缩过程中,需要考虑保留文件的原始权限和属性,这可以通过设置ZipEntry的额外字段来实现。 10. **安全性** 当处理来自不可信来源的ZIP文件时,应小心潜在的安全风险,如路径遍历攻击(Path Traversal...

    Zip文件压缩和解压

    以上就是关于Zip文件压缩和解压的基本介绍,无论是通过图形界面工具还是编程实现,都能有效地管理和处理Zip文件。在实际应用中,我们还可以根据需求选择合适的压缩算法、设置密码保护、添加注释等功能,提高文件管理...

    java zip多文件压缩 和 解压

    ZIP格式 的压缩和解压源码,里面有main方法可直接测试,java实现实例。

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

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

    JAVA 上传ZIP,RAR文件并解压

    在Java编程环境中,上传并处理ZIP和RAR压缩文件是一项常见的任务,特别是在文件传输、数据存储以及备份场景下。本文将详细讲解如何实现这个功能,包括文件上传、实时进度跟踪、指定解压路径以及解压过程。 首先,让...

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

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

    java 实现文件的压缩与解压

    在Java编程语言中,实现文件的压缩和解压是常见的任务,这有助于数据存储和传输。本示例将深入探讨如何使用Java的内置库来处理ZIP格式的压缩和解压缩。`java.util.zip`包提供了必要的类来实现这一功能。 首先,让...

    实现java文件压缩与解压

    本文将详细介绍如何使用Java实现文件的压缩与解压功能。 #### 二、关键技术点 1. **Apache Commons Compress库**:本示例中使用了Apache Commons Compress库来进行文件压缩与解压操作。这是一个功能强大的工具包,...

    java实现的zip文件定时解压

    本话题聚焦于使用Java实现的zip文件定时解压功能,这是一个常见的需求,特别是在数据备份、文件同步或自动化工作流中。下面我们将深入探讨如何使用Java来实现这一功能。 首先,我们需要了解Java对zip文件的支持。...

Global site tag (gtag.js) - Google Analytics