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无需解压直接读取Zip文件和文件内容是Java语言中的一种常见操作,通过使用java.util.zip包中的ZipFile、ZipInputStream和ZipEntry类,我们可以轻松地读取Zip文件和文件内容。下面,我们将详细介绍如何使用Java...
沙漏哦2022-09-16 16:00:57原证Java解压缩文件,尤其对于Rar5.0版本的解压实现 项目描述 junrar已经不再支持Rar5版本的压缩文件。sevenzipjbinding对于Rar5压缩包的解压是调用本地7z软件进行解压的,如果本机环境...
在Java编程环境中,解压不同类型的压缩文件,如RAR5、Zip和7z,是一项常见的任务。为了实现这一功能,我们需要使用特定的库,因为Java标准库并不直接支持RAR5和7z格式。这里我们将详细探讨如何使用Java来处理这些...
### Java对ZIP、RAR文件的压缩与解压缩技术解析 #### 概述 在实际开发过程中,文件的压缩与解压缩是一项非常常见的需求。本文将详细介绍如何使用Java语言实现ZIP和RAR格式文件的压缩与解压缩操作。文章通过具体的...
在Java编程环境中,上传并处理ZIP和RAR压缩文件是一项常见的任务,特别是在文件传输、数据存储以及备份场景下。本文将详细讲解如何实现这个功能,包括文件上传、实时进度跟踪、指定解压路径以及解压过程。 首先,让...
解析rar/zip文件压缩包源码,只需要指定解析的文件夹里的压缩文件则可以全部解析出来,解析后的文件可以放到你指定的文件夹内。
java ZIP和RAR 压缩包 目录结构。 1.ant.jar 解决java自带zip不能读取中文压缩包的问题; 2.需要安装WINRAR软件,以便解压rar文件,然后获取对应目录; 3.实现在线预览压缩包目录结构的功能;
由于LZH格式相对较老,现代的压缩格式如ZIP、RAR和7Z在压缩效率和特性上通常更胜一筹,但LZH在某些特定场景(如兼容旧软件、处理小文件或对速度有要求的情况)仍具有一定的价值。因此,了解和掌握如何使用Java-JLHA...
由于提供的信息中只有一份"java72-java-advance源代码.rar"的文件名,我们可以假设这个RAR文件是压缩包内的主要内容,包含了Java的高级源代码示例或者项目。RAR是一种常见的压缩格式,通常用来打包多个文件或目录,...
Java作为一种多用途的编程语言,提供了丰富的库和工具来解析PDF、ZIP、DOC和XLS等格式的文件。下面将详细介绍这些格式的解析方法。 首先,PDF(Portable Document Format)是一种用于存储和交换文档的格式,由Adobe...
Java-unrar库是一个开源项目,它为Java开发者提供了解压缩RAR文件的能力。RAR是一种流行的压缩格式,由RARLAB开发,通常用于存储大量数据并减少文件大小。Java-unrar库允许在Java应用程序中处理RAR文件,而无需依赖...
在Java环境中处理RAR文件并不像处理ZIP文件那样内置支持,因此Java-unrar库提供了一个方便的API,使开发者能够在Java应用程序中轻松地与RAR文件交互。 该库的核心功能包括: 1. **RAR文件读取**:Java-unrar允许...
`.tar.gz`文件实际上是先用tar打包,再用gzip压缩,因此在Java中解析这种文件需要两个步骤:解压(gzip)和解包(tar)。 下面我们将深入探讨如何在Java中解析.tar.gz文件,并涉及相关的Java API和技术。 1. **...
根据提供的文件信息,本文将详细解析关于如何使用Java语言来解压`.rar`或`.zip`格式的压缩文件。此过程涉及多个步骤和技术要点,包括但不限于处理文件输入输出流、利用`java.util.zip`包中的类进行解压缩操作以及...
在这个“文件解压与Excel解析”的项目中,我们将深入探讨两个核心主题:如何解压RAR和ZIP压缩文件,以及如何解析并操作Excel文件。这两个主题在软件开发、数据分析以及日常办公中都具有广泛的实用性。 首先,我们来...
首先,我们要了解的是Java中用于文件压缩的库,最常见的有Java的内置`java.util.zip`包。这个包提供了几个类,如`ZipOutputStream`和`ZipInputStream`,用于创建和读取ZIP格式的压缩文件。ZIP是一种广泛使用的压缩...
APK文件是ZIP格式,可以使用解压缩工具打开,找到里面的classes.dex文件。 3. **查看源代码**:JD-GUI会显示反编译出的Java源代码。你可以浏览类、方法和变量,虽然可能不是原始的开发者编写的形式,但依然能提供有...
1. **解压**:首先需要将 `gradle-7.3.3-bin.rar` 解压缩到您选择的目录。 2. **配置环境变量**:为了方便全局使用,需要将解压后的 `gradle\bin` 目录添加到系统的PATH环境变量中。 3. **验证安装**:打开命令行,...
【标题】:“vscode-java-dependency-master.rar”是一个与Visual Studio Code(VSCode)扩展相关的压缩文件,专门针对Java开发者的依赖管理。 【描述】:这个压缩包“vscode-java-dependency-master.rar”包含了...