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

java实现解压zip文件

    博客分类:
  • java
 
阅读更多

注意:

1:使用jdk自带的zip的util的工具类实现解压zip文件,会出现中文文件名称乱码的问题,apache的zip的工具类改正了这个问题。

 

2:使用apache的zip的工具类,编码方式和项目的编码方式有关系,若你的项目使用的是utf-8的字符编码,则按照utf-8的方式解压缩,或你的工程的字符编码是gbk的项目编码,则按照字符集为gbk的项目编码来进行解压缩

,对于这个字符编码问题,我在写项目中亲自过.

 

3:若用apache的zip类库,来实现压缩或是解压缩,则还是出现文件名称乱码问题,这就需要手动设置字符编码啦。

 

程序代码如下:

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.util.Enumeration;

import org.apache.log4j.Logger;
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;
import org.apache.tools.zip.ZipOutputStream;

/**
 * @author Sandy
 * @version $Revision: 1.1 $ 建立日期 2011-7-2
 */
public class ZipFileUtil
{
	private static final Logger		logger	= Logger.getLogger(ZipFileUtil.class);

	private static ZipOutputStream	zipOut;

	private static int				bufSize;

	private static byte[]			buf;

	private static int				readBytes;

	private static final String		_GBK	= "gbk";

	static
	{
		bufSize = 1024;
		buf = new byte[bufSize];
	}

	/**
	 * 压缩文件
	 * 
	 * @param zipDirectory
	 * @param destFileName
	 */
	public static void doZip(String zipDirectory, String destFileName)
	{
		File zipDir = new File(zipDirectory);

		File destFile = new File(destFileName);

		try
		{
			zipOut = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(destFile)));
			zipOut.setEncoding(_GBK);

			handleDirectory(zipDir, zipOut);
			zipOut.close();
			logger.info("压缩文件成功...........");
		}
		catch (IOException ex)
		{
			logger.error("压缩文件出错:" + ex.getMessage());
		}
	}

	// call by doZip
	private static void handleDirectory(File dir, ZipOutputStream zipOut) throws IOException
	{
		FileInputStream input;

		File[] files = dir.listFiles();

		if (files.length == 0)
		{

			zipOut.putNextEntry(new ZipEntry(dir.toString() + "/"));
			zipOut.closeEntry();
		} else
		{
			for (File sourceFile : files)
			{

				if (sourceFile.isDirectory())
				{
					handleDirectory(sourceFile, zipOut);
				} else
				{
					input = new FileInputStream(sourceFile);

					zipOut.putNextEntry(new ZipEntry(sourceFile.getName()));

					while ((readBytes = input.read(buf)) > 0)
					{
						zipOut.write(buf, 0, readBytes);
					}

					zipOut.closeEntry();
				}
			}
		}
	}

	public static void unZip(String unZipfileName, String targetfolder)
	{
		FileOutputStream output;
		File file;
		InputStream input;
		ZipFile zipFile;

		try
		{
			zipFile = new ZipFile(unZipfileName, _GBK);

			for (Enumeration<?> entries = zipFile.getEntries(); entries.hasMoreElements();)
			{
				ZipEntry entry = (ZipEntry) entries.nextElement();

				file = new File(targetfolder, entry.getName());

				if (entry.isDirectory())
				{
					file.mkdirs();
				} else
				{
					File parent = file.getParentFile();
					if (!parent.exists())
					{
						parent.mkdirs();
					}

					input = zipFile.getInputStream(entry);

					output = new FileOutputStream(file);
					while ((readBytes = input.read(buf)) > 0)
					{
						output.write(buf, 0, readBytes);
					}
					output.close();

					input.close();
				}
			}
			zipFile.close();
			logger.info("解压文件成功...........");
		}
		catch (IOException ex)
		{
			logger.error("解压文件["+unZipfileName+"]出错:" + ex.getMessage());
		}
	}

	public static void main(String[] args) throws Exception
	{
		// ZipFileUtil.doZip("D:\\unzipDir", "D:\\targetZip\\organ.zip");
		ZipFileUtil.unZip("D:\\ziptest\\ziptest.zip", "D:\\unzipDir");

	}

}

 

分享到:
评论

相关推荐

    java实现解压zip文件代码实例直接运行

    在Java编程环境中,解压ZIP文件是一项常见的任务,特别是在处理数据传输、文件打包或系统集成时。本实例将向你展示如何使用Java API来实现这一功能。请注意,这个过程假设你的ZIP文件是通过正常的方式创建的,即使用...

    使用Java向服务器上传文件压缩包并实现解压缩

    在这个场景中,我们关注的是如何使用Java来实现文件压缩包的上传以及在服务器上的解压缩。Java作为一种强大的编程语言,提供了丰富的库来支持这样的操作,特别是在涉及到SFTP(Secure File Transfer Protocol)时,...

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

    在Java编程环境中,处理压缩和解压缩文件是一项常见的任务,特别是在数据存储、文件传输和备份等领域。本项目专注于使用Java实现带密码保护的ZIP文件的压缩和解压功能。这是一项安全措施,允许用户对敏感文件进行...

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

    虽然Ant不直接用于解压缩文件,但可以与Java代码结合使用,例如通过Ant任务来调用`CompressFileUtils`进行解压缩操作。Ant提供了一系列的任务,如`unzip`,可以直接在构建脚本中用于解压缩文件。 至于标签“文件解...

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

    3. **解压缩文件** 解压ZIP文件则需要一个`ZipInputStream`实例,它包装在一个`FileInputStream`中,指向ZIP文件。通过调用`getNextEntry`方法,你可以逐个访问ZIP文件中的每个条目,然后创建相应的文件或目录,将...

    java 解压缩zip文件

    本文将深入探讨如何使用Java API来解压缩ZIP文件,包括基本概念、核心类库以及具体实现步骤。 ZIP文件是一种广泛使用的文件归档格式,它可以将多个文件和目录组合成一个单一的可压缩文件,方便存储和传输。在Java中...

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

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

    java解压zip压缩文件

    在Java编程环境中,解压ZIP压缩文件是一项常见的任务,它涉及到文件I/O操作以及对...`UnZip.java`和`UnZip2.java`文件可能是这种功能的具体实现,通过阅读它们的源代码,可以深入了解Java解压ZIP文件的各种策略和技巧。

    java实现的zip文件定时解压

    3. **解压zip文件**:对于每个找到的zip文件,创建`ZipInputStream`对象,然后逐个处理`ZipEntry`。对于每个条目,创建相应的输出流(如`FileOutputStream`),并将`ZipInputStream`中的数据写入到输出流,完成解压...

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

    这个库简化了在Java中处理压缩文件的过程,提供了丰富的API供开发者使用。 首先,我们来看`FileUtils.java`中的主要方法。通常,这个类会包含两个核心功能:`zipFiles()`用于创建ZIP包,`unzipFile()`用于解压ZIP包...

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

    - **解压缩文件**:使用`unzip()`方法可以解压缩整个Zip文件,或者通过`extractFile()`或`extractFolder()`方法提取指定的文件或目录。 - **加密**:`zip4j`支持AES 128/256位加密,你可以设置密码保护Zip文件,...

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

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

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

    总的来说,解压缩ZIP和RAR格式的文件在Java中可以通过标准库或第三方库轻松实现,理解并掌握I/O流和压缩流的使用是关键。在开发过程中,确保代码的健壮性和灵活性,同时考虑性能优化,例如批量解压缩、多线程处理等...

    基于Java向zip压缩包追加文件

    当需要向已存在的ZIP文件追加文件时,首先使用`ZipUtil`解压缩ZIP文件到一个临时目录,然后在该目录中添加新的文件,最后重新压缩整个目录并覆盖原有的ZIP文件。以下是大致的步骤: - 使用`ZipUtil`的`unzip`方法...

    java实现批量解压带密码的 rar or zip 文件

    使用`java.util.zip`包中的`ZipInputStream`和`ZipEntry`类,可以读取并解压ZIP文件。以下是一个基本的解压流程: - 创建`ZipInputStream`实例,传入文件输入流。 - 循环遍历`ZipInputStream`的`ZipEntry`,获取...

    java自动解压缩文件

    Java自动解压缩文件是编程领域中的一个重要话题,尤其是在服务器端应用中,经常需要处理上传的压缩文件并进行解压操作。Java提供了丰富的API来支持这一功能,主要涉及到`java.util.zip`包中的类,如`ZipInputStream`...

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

    总之,Java提供了解压缩和压缩文件的基本工具,对于ZIP格式,可以通过`java.util.zip`包轻松实现;而对于RAR格式,可以利用第三方库,如Apache Commons Compress。理解并熟练运用这些工具,将有助于开发出能够处理...

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

    在给定的压缩包文件中,包含了一个名为"JAVA解压ZIP格式的压缩包.docx"的文档,这可能是对解压过程的详细说明或补充信息。在实际操作中,你可以将上述代码与这个文档结合,以获得更深入的理解和实践指导。

    java获取压缩文件的名称并解压

    在Java编程中,处理压缩文件,如ZIP格式的文件,是一项常见的任务。本文将深入探讨如何使用Java来获取ZIP文件的名称以及如何高效地解压缩这些文件,特别是通过多线程来提高性能。 首先,我们需要引入Java的内置库`...

    Java解压缩文件,尤其对于Rar5.0版本的解压实现.zip

    沙漏哦2022-09-16 16:00:57原证Java解压缩文件,尤其对于Rar5.0版本的解压实现 项目描述 junrar已经不再支持Rar5版本的压缩文件。sevenzipjbinding对于Rar5压缩包的解压是调用本地7z软件进行解压的,如果本机环境...

Global site tag (gtag.js) - Google Analytics