`
ziye520
  • 浏览: 13391 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

java 解析压缩文件-rar,zip

    博客分类:
  • Java
阅读更多
package impl;

import inter.AbstractUnCompressService;

import java.io.File;
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.ZipFile;

/**
 * This class is used to uncompress rar & zip compress file
 * 
 * @author Jacky.Dong
 * 
 */
public class ZipUnCompressServiceImpl extends AbstractUnCompressService {

	private static final String SUFFIX_RAR = ".rar";
	private static final String SUFFIX_ZIP = ".zip";

	@Override
	public void unCompressFolder(String folder) {
		// TODO Auto-generated method stub

	}

	@Override
	@SuppressWarnings("rawtypes")
	public void unCompressFile(String zipFilename, String outputDirectory)
			throws IOException {

		if (null == outputDirectory) {
			outputDirectory = zipFilename.replace(SUFFIX_RAR, "").replace(
					SUFFIX_ZIP, "");
		}

		File outFile = new File(outputDirectory);
		if (!outFile.exists()) {
			outFile.mkdirs();
		}

		ZipFile zipFile = new ZipFile(zipFilename);

		Enumeration en = zipFile.entries();
		ZipEntry zipEntry = null;
		while (en.hasMoreElements()) {
			zipEntry = (ZipEntry) en.nextElement();
			if (zipEntry.isDirectory()) {
				// mkdir directory
				String dirName = zipEntry.getName();
				// System.out.println("=dirName is:=" + dirName + "=end=");
				dirName = dirName.substring(0, dirName.length() - 1);
				File f = new File(outFile.getPath() + File.separator + dirName);
				f.mkdirs();
			} else {
				// unzip file
				String strFilePath = outFile.getPath() + File.separator
						+ zipEntry.getName();
				File f = new File(strFilePath);

				// 判断文件不存在的话,就创建该文件所在文件夹的目录
				if (!f.exists()) {
					String[] arrFolderName = zipEntry.getName().split(
							File.separator);
					String strRealFolder = "";
					for (int i = 0; i < (arrFolderName.length - 1); i++) {
						strRealFolder += arrFolderName[i] + File.separator;
					}
					strRealFolder = outFile.getPath() + File.separator
							+ strRealFolder;
					File tempDir = new File(strRealFolder);
					// 此处使用.mkdirs()方法,而不能用.mkdir()
					tempDir.mkdirs();
				}
				// ////end///
				f.createNewFile();
				InputStream in = zipFile.getInputStream(zipEntry);
				FileOutputStream out = new FileOutputStream(f);
				try {
					int c;
					byte[] by = new byte[BUFFEREDSIZE];
					while ((c = in.read(by)) != -1) {
						out.write(by, 0, c);
					}
					out.flush();
				} catch (IOException e) {
					throw e;
				} finally {
					out.close();
					in.close();
				}
			}
		}
	}

}

 

分享到:
评论

相关推荐

    Java通用解压代码(RAR5,Zip,7Z)

    在Java编程环境中,解压不同类型的压缩文件,如RAR5、Zip和7z,是一项常见的任务。为了实现这一功能,我们需要使用特定的库,因为Java标准库并不直接支持RAR5和7z格式。这里我们将详细探讨如何使用Java来处理这些...

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

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

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

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

    java对zip、rar文件的压缩和解压缩

    ### Java对ZIP、RAR文件的压缩与解压缩技术解析 #### 概述 在实际开发过程中,文件的压缩与解压缩是一项非常常见的需求。本文将详细介绍如何使用Java语言实现ZIP和RAR格式文件的压缩与解压缩操作。文章通过具体的...

    解析rar/zip文件压缩包

    解析rar/zip文件压缩包源码,只需要指定解析的文件夹里的压缩文件则可以全部解析出来,解析后的文件可以放到你指定的文件夹内。

    java 读取ZIP和RAR压缩包的目录结构

    java ZIP和RAR 压缩包 目录结构。 1.ant.jar 解决java自带zip不能读取中文压缩包的问题; 2.需要安装WINRAR软件,以便解压rar文件,然后获取对应目录; 3.实现在线预览压缩包目录结构的功能;

    java-jlha.zip-用于解、压缩lzh格式文件

    由于LZH格式相对较老,现代的压缩格式如ZIP、RAR和7Z在压缩效率和特性上通常更胜一筹,但LZH在某些特定场景(如兼容旧软件、处理小文件或对速度有要求的情况)仍具有一定的价值。因此,了解和掌握如何使用Java-JLHA...

    java72-java-advance源代码.zip

    由于提供的信息中只有一份"java72-java-advance源代码.rar"的文件名,我们可以假设这个RAR文件是压缩包内的主要内容,包含了Java的高级源代码示例或者项目。RAR是一种常见的压缩格式,通常用来打包多个文件或目录,...

    Java解析pdf,zip,doc等格式文档

    Java作为一种多用途的编程语言,提供了丰富的库和工具来解析PDF、ZIP、DOC和XLS等格式的文件。下面将详细介绍这些格式的解析方法。 首先,PDF(Portable Document Format)是一种用于存储和交换文档的格式,由Adobe...

    java-unrar-0.2-src.zip

    Java-unrar库是一个开源项目,它为Java开发者提供了解压缩RAR文件的能力。RAR是一种流行的压缩格式,由RARLAB开发,通常用于存储大量数据并减少文件大小。Java-unrar库允许在Java应用程序中处理RAR文件,而无需依赖...

    java-unrar.zip

    在Java环境中处理RAR文件并不像处理ZIP文件那样内置支持,因此Java-unrar库提供了一个方便的API,使开发者能够在Java应用程序中轻松地与RAR文件交互。 该库的核心功能包括: 1. **RAR文件读取**:Java-unrar允许...

    java 解析 tar gz.rar

    `.tar.gz`文件实际上是先用tar打包,再用gzip压缩,因此在Java中解析这种文件需要两个步骤:解压(gzip)和解包(tar)。 下面我们将深入探讨如何在Java中解析.tar.gz文件,并涉及相关的Java API和技术。 1. **...

    压缩文件(.rar/.zip)解压

    根据提供的文件信息,本文将详细解析关于如何使用Java语言来解压`.rar`或`.zip`格式的压缩文件。此过程涉及多个步骤和技术要点,包括但不限于处理文件输入输出流、利用`java.util.zip`包中的类进行解压缩操作以及...

    文件解压与Excel解析

    在这个“文件解压与Excel解析”的项目中,我们将深入探讨两个核心主题:如何解压RAR和ZIP压缩文件,以及如何解析并操作Excel文件。这两个主题在软件开发、数据分析以及日常办公中都具有广泛的实用性。 首先,我们来...

    毕业答辩-JAVA文件压缩与解压缩实践(源代码论文).rar

    首先,我们要了解的是Java中用于文件压缩的库,最常见的有Java的内置`java.util.zip`包。这个包提供了几个类,如`ZipOutputStream`和`ZipInputStream`,用于创建和读取ZIP格式的压缩文件。ZIP是一种广泛使用的压缩...

    android 逆向解析工具类--逆向工具.rar

    APK文件是ZIP格式,可以使用解压缩工具打开,找到里面的classes.dex文件。 3. **查看源代码**:JD-GUI会显示反编译出的Java源代码。你可以浏览类、方法和变量,虽然可能不是原始的开发者编写的形式,但依然能提供有...

    gradle-7.3.3-bin.rar

    1. **解压**:首先需要将 `gradle-7.3.3-bin.rar` 解压缩到您选择的目录。 2. **配置环境变量**:为了方便全局使用,需要将解压后的 `gradle\bin` 目录添加到系统的PATH环境变量中。 3. **验证安装**:打开命令行,...

    vscode-java-dependency-master.rar

    【标题】:“vscode-java-dependency-master.rar”是一个与Visual Studio Code(VSCode)扩展相关的压缩文件,专门针对Java开发者的依赖管理。 【描述】:这个压缩包“vscode-java-dependency-master.rar”包含了...

    java源码包JSP实例源码JAVA开发源码65个合集.zip

    文件压缩解压缩包 Commons Compress.rar 日历同步统计 GCALDaemon.zip 物业管理系统毕业设计+源码.rar 用iText类库制作PDF文档.rar 用JAVA做的聊天软件,有安装程序和源代码.rar 用java写的SFTP代码.rar 用Java加密...

Global site tag (gtag.js) - Google Analytics