/**
* @Title: unZipFile
* @Description: 解压ZIP文件
* @author LuRh
* @param @param zipFile
* @param @param descDir
* @param @return
* @param @throws IOException
* @return boolean
* @throws
*/
@SuppressWarnings("rawtypes")
public static boolean unZipFile(String filePath, String extractToPath) {
try {
File zipFile = new File(filePath);
File extractPath = new File(extractToPath);
if (!extractPath.exists()) {
extractPath.mkdirs();
}
ZipFile zip = new ZipFile(zipFile, "GBK");
for (Enumeration entries = zip.getEntries(); entries.hasMoreElements();) {
ZipEntry entry = (ZipEntry) entries.nextElement();
String zipEntryName = entry.getName();
InputStream in = zip.getInputStream(entry);
String outPath = (extractToPath + zipEntryName).replaceAll("\\*", "/");
File file = new File(outPath.substring(0, outPath.lastIndexOf('/')));
if (!file.exists()) {
file.mkdirs();
}
if (new File(outPath).isDirectory()) {
continue;
}
if (in != null) {
OutputStream out = new FileOutputStream(outPath);
byte[] buf = new byte[2048];
int len;
while ((len = in.read(buf)) > 0) {
out.write(buf, 0, len);
}
in.close();
out.close();
}
}
} catch (IOException e) {
return false;
}
return true;
}
/**
* @Title: unRARFile
* @Description: 解压RAR文件
* @author LuRh
* @param @param sourceRar
* @param @param destDir
* @param @return
* @param @throws Exception
* @return boolean
* @throws
*/
public static boolean unRARFile(String filePath, String extractToPath) {
Archive archive = null;
FileOutputStream fileOutputStream = null;
try {
archive = new Archive(new File(filePath));
FileHeader fileHeader = archive.nextFileHeader();
while (fileHeader != null) {
if (!fileHeader.isDirectory()) {
String compressFileName = "";
String destFileName = "";
String destDirName = "";
if (fileHeader.isUnicode()) {
compressFileName = fileHeader.getFileNameW().trim();
} else {
compressFileName = fileHeader.getFileNameString().trim();
}
// 非windows系统
if (File.separator.equals("/")) {
destFileName = extractToPath + compressFileName.replaceAll("\\\\", "/");
destDirName = destFileName.substring(0, destFileName.lastIndexOf("/"));
// windows系统
} else {
destFileName = extractToPath + compressFileName.replaceAll("/", "\\\\");
destDirName = destFileName.substring(0, destFileName.lastIndexOf("\\"));
}
File dir = new File(destDirName);
if (!dir.exists() || !dir.isDirectory()) {
dir.mkdirs();
}
fileOutputStream = new FileOutputStream(new File(destFileName));
archive.extractFile(fileHeader, fileOutputStream);
fileOutputStream.close();
fileOutputStream = null;
}
fileHeader = archive.nextFileHeader();
}
archive.close();
archive = null;
} catch (Exception e) {
return false;
} finally {
if (fileOutputStream != null) {
try {
fileOutputStream.close();
fileOutputStream = null;
} catch (Exception e) {
e.printStackTrace();
}
}
if (archive != null) {
try {
archive.close();
archive = null;
} catch (Exception e) {
return false;
}
}
}
return true;
}
分享到:
相关推荐
在Java编程环境中,处理压缩文件如RAR和ZIP是常见的任务,尤其在数据传输、存储优化以及软件部署等场景中。本文将深入探讨如何使用Java来解压RAR和ZIP格式的文件,提供必要的理论知识和实战代码示例。 首先,我们要...
本文将深入探讨如何使用Java实现ZIP和RAR类型的压缩与解压操作,以及相关知识点。 首先,我们来看ZIP文件格式。ZIP是一种广泛使用的文件压缩格式,其在Java中的处理主要通过`java.util.zip`包。这个包提供了多个类...
java解压缩 rar 以及 zip 格式文件
总的来说,解压缩ZIP和RAR格式的文件在Java中可以通过标准库或第三方库轻松实现,理解并掌握I/O流和压缩流的使用是关键。在开发过程中,确保代码的健壮性和灵活性,同时考虑性能优化,例如批量解压缩、多线程处理等...
在Java编程环境中,解压不同类型的压缩文件,如RAR5、Zip和7z,是一项常见的任务。为了实现这一功能,我们需要使用特定的库,因为Java标准库并不直接支持RAR5和7z格式。这里我们将详细探讨如何使用Java来处理这些...
在Java编程环境中,上传并处理ZIP和RAR压缩文件是一项常见的任务,特别是在文件传输、数据存储以及备份场景下。本文将详细讲解如何实现这个功能,包括文件上传、实时进度跟踪、指定解压路径以及解压过程。 首先,让...
在Java编程环境中,批量解压带密码的RAR或ZIP文件是一项常见的任务,特别是在软件开发过程中,可能需要处理包含源码和库文件的压缩包。本文将深入探讨如何使用Java实现这个功能,以及涉及的相关知识点。 首先,解压...
本文将详细介绍如何使用Java语言实现ZIP和RAR格式文件的压缩与解压缩操作。文章通过具体的代码示例展示了整个处理流程,并针对不同格式文件的特点进行了优化。 #### ZIP文件的压缩与解压缩 ##### 压缩原理与API...
在Java中,可以使用`java.util.zip.GZIPOutputStream`来压缩数据,`java.util.zip.GZIPInputStream`来解压缩。`GZUtil.java`可能包含了压缩和解压缩GZ文件的相关方法。 4. **FTP工具类**: FTP(文件传输协议)常...
在提供的代码中,可以看到使用了`de.innosystec.unrar.Archive`类来解压缩RAR文件,但请注意,这个库可能需要额外的授权。 ```java Archive archive = new Archive(new File("input.rar")); archive.extractAll(...
java ZIP和RAR 压缩包 目录结构。 1.ant.jar 解决java自带zip不能读取中文压缩包的问题; 2.需要安装WINRAR软件,以便解压rar文件,然后获取对应目录; 3.实现在线预览压缩包目录结构的功能;
沙漏哦2022-09-16 16:00:57原证Java解压缩文件,尤其对于Rar5.0版本的解压实现 项目描述 junrar已经不再支持Rar5版本的压缩文件。sevenzipjbinding对于Rar5压缩包的解压是调用本地7z软件进行解压的,如果本机环境...
我这个资源是也是从网上下的,下下来之后在单个测试类里面解压rar是没问题的,但是在Action里面调就抛java.lang.OutOfMemoryError: Java heap space,所以自己换了种解压rar的方法,以前的方法注释掉了。action里面...
在Android平台上,对ZIP和RAR文件进行解压缩是常见的需求,比如在安装APK应用、更新资源文件或者处理用户上传的数据时。JavaAndroid可用的ziprar解压缩代码实现提供了这样的功能,但请注意,由于文件数量多,可能...
Java无需解压直接读取Zip文件和文件内容是Java语言中的一种常见操作,通过使用java.util.zip包中的ZipFile、ZipInputStream和ZipEntry类,我们可以轻松地读取Zip文件和文件内容。下面,我们将详细介绍如何使用Java...
接下来,我们讨论如何解压缩ZIP文件。解压缩通常包括以下步骤: 1. **创建`ZipInputStream`**:同样,你需要创建一个`ZipInputStream`,它从ZIP文件的输入流读取。 ```java FileInputStream fis = new ...
首先,我们需要一个库来处理RAR格式,因为Java标准库并不直接支持RAR解压缩。在这种情况下,我们可以使用`java-unrar`库,这是一个基于GNU Crypto的Java RAR工具包。文件名`java-unrar_gnu-crypto`可能就是这个库的...
这个示例展示了如何使用Apache Commons Compress库进行.zip文件的解压缩和压缩操作。请注意,对于.rar和.7z文件,你需要根据具体库的文档进行相应调整。 总的来说,Java处理.zip、.rar和.7z文件时,需依赖第三方库...
在Java编程语言中,`java.util.zip` 是一个非常重要的包,它提供了处理各种压缩格式(如ZIP和GZ)的工具。在这个场景中,我们将深入探讨如何使用这个包来解压缩和压缩ZIP格式的文件。`java.util.zip` 包包含几个关键...
在Java编程环境中,解压ZIP和RAR文件是常见的任务,特别是在处理数据传输、备份或集成系统时。本文将深入探讨如何使用Java实现这一功能,并提供详细的步骤和代码示例。 首先,我们来看如何使用Java来解压ZIP文件。...