import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
import de.innosystec.unrar.Archive;
import de.innosystec.unrar.rarfile.FileHeader;
public class Decompress {
public static boolean existZH(String str) {
String regEx = "[\\u4e00-\\u9fa5]";
Pattern p = Pattern.compile(regEx);
Matcher m = p.matcher(str);
return m.find();
}
public static String getFileName(String fileName){
if (null == fileName && "".equals(fileName)) {
return "";
}
int index = fileName.lastIndexOf(".");
return fileName.substring(0, index);
}
public static boolean unrarFile(String rarFilePath, String extPlace){
boolean flag = false;
if (null == rarFilePath || "".equals(rarFilePath.trim())) {
System.out.println("rar文件路径为空.");
return flag;
} else {
int index = rarFilePath.lastIndexOf(".");
if (index > -1) {
String suffix = rarFilePath.substring(index + 1, rarFilePath.length());
if (!"rar".equalsIgnoreCase(suffix)) {
System.out.println("压缩文件格式不正确.");
return flag;
}
}
}
if (null == extPlace || "".equals(extPlace.trim())) {
System.out.println("解压路径为空.");
return flag;
}
Archive archive = null;
OutputStream os = null;
try {
File file = new File(rarFilePath);
String extDir = extPlace + getFileName(file.getName()) + File.separator;
archive = new Archive(file);
FileHeader fh = archive.nextFileHeader();
String fileName = null;
String path = null;
String dirPath = null;
File dir = null;
while (null != fh) {
fileName = fh.getFileNameW().trim();
if (!existZH(fileName)) {
fileName = fh.getFileNameString();
}
path = (extDir + fileName).replaceAll("\\\\", "/");
int end = path.lastIndexOf("/");
if (end > -1) {
dirPath = path.substring(0, end);
}
dir = new File(dirPath);
if (!dir.exists()) {
dir.mkdirs();
}
if (fh.isDirectory()) {
fh = archive.nextFileHeader();
continue;
}
os = new FileOutputStream(extDir + fileName);
archive.extractFile(fh, os);
os.flush();
os.close();
fh = archive.nextFileHeader();
}
flag = true;
} catch (Exception e) {
e.printStackTrace();
} finally {
if (null != os) {
try {
os.flush();
os.close();
} catch (IOException e) {
e.printStackTrace();
}
}
if (null != archive) {
try {
archive.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
return flag;
}
}
java-unrar-0.3.jar在附件中。
分享到:
相关推荐
java 解压 rar 文件,压缩包为测试工程,包含 java-unrar-0.3.jar
Java中的RAR文件递归解压涉及到了文件处理和压缩库的使用,这在软件开发中是常见的需求。本文将深入探讨如何使用Java实现RAR文件的递归解压,包括理解RAR文件格式、选择合适的库、编写解压代码以及处理递归情况。 ...
Java解压RAR文件,压缩包内包含源码、Jar包、依赖包和示例程序,也可以从http://code.google.com/p/java-unrar/downloads/list这里下载支持密码的unrar项目(包括源码和jar包),其依赖包也很容易搜到。 RAR 密码
一个用java实现解压RAR压缩文件的例子,由于RAR的压缩算法被专利,所以借助了第三方的包(此文件里包含三方包)。
对于上传RAR和ZIP文件的解压,Java标准库提供了`java.util.zip`包,包含`ZipInputStream`和`ZipFile`类来处理ZIP文件,而RAR文件则需要第三方库如Apache Commons Compress。下面是一个解压ZIP文件的例子: ```java ...
Java解压RAR文件,压缩包内包含源码、Jar包、依赖包和示例程序,也可以从http://code.google.com/p/java-unrar/downloads/list这里下载支持密码的unrar项目(包括源码和jar包),其依赖包也很容易搜到。
使用java解压带密码的rar压缩文件,解压目录下所有的rar文件
java rar解压工具类 // 第一个参数是需要解压的压缩包路径,第二个参数参考JdkAPI文档的RandomAccessFile //r代表以只读的方式打开文本,也就意味着不能用write来操作文件
沙漏哦2022-09-16 16:00:57原证Java解压缩文件,尤其对于Rar5.0版本的解压实现 项目描述 junrar已经不再支持Rar5版本的压缩文件。sevenzipjbinding对于Rar5压缩包的解压是调用本地7z软件进行解压的,如果本机环境...
引入依赖后,你可以使用其提供的API来解压RAR5文件。 接着,对于Zip文件,Java标准库提供了`java.util.zip`包,包含了`ZipInputStream`和`ZipEntry`等类,可以方便地进行读取和解压操作。以下是一个简单的解压Zip...
本文将详细介绍标题和描述中提到的几个关键知识点:Java中的zip、rar(包括处理带密码的RAR文件)、gz压缩,以及FTP工具类的使用。 1. **Java ZIP压缩与解压缩**: Java内置的`java.util.zip`包提供了处理ZIP文件...
总结一下,Java解压RAR文件涉及使用第三方库如`java-unrar`,通过创建RarFile对象,遍历并解压文件条目来完成。同时,`ant.jar`在构建流程中可用于自动化解压缩任务。`DeCompressUtil.java`中的示例代码提供了解压的...
// 解压RAR文件 // ... } } ``` 在实际应用中,`compress`方法需要遍历源文件夹中的所有文件,创建`RarOutputStream`,并将每个文件写入。`decompress`方法则需打开RAR文件,读取每个条目,并将其解压到目标目录...
解压RAR文件则稍微复杂一些,因为Java标准库不直接支持RAR格式。你需要引入第三方库如Apache Commons Compress或者JSAPAR。这里以Apache Commons Compress为例: ```java import org.apache.commons.compress....
1. **解压RAR文件**:你可以使用`jUnrar`来解压整个RAR文件到指定的目录,或者只提取特定的文件。 2. **遍历RAR文件内容**:库提供了方法来获取RAR文件中的所有文件和目录,可以方便地查看压缩包内的结构。 3. **...
3. 解压RAR文件: 对于RAR文件的解压,我们可以使用`org.apache.commons.compress.archivers.rar.RarArchiveInputStream`。以下是一个简单的解压示例: ```java import org.apache.commons.compress.archivers....
### Java对ZIP、RAR文件的压缩与解压缩技术解析 #### 概述 在实际开发过程中,文件的压缩与解压缩是一项非常常见的需求。本文将详细介绍如何使用Java语言实现ZIP和RAR格式文件的压缩与解压缩操作。文章通过具体的...
Java-unrar库是一个用于在Java环境中解压RAR文件的开源工具。这个库使得开发者无需依赖外部的RAR解压缩软件,就能直接在Java程序中处理RAR文件。本文将深入讲解如何使用Java-unrar库来实现RAR文件的解压缩,并探讨...
以下是一个简单的使用`java-unrar-0.3.jar`库解压RAR文件的Java代码示例: ```java import com.igormaznitsa.junrar.Archive; import com.igormaznitsa.junrar.UnrarEventConsumer; import ...
在Java编程语言中,解压RAR文件涉及到对RAR文件格式的理解和使用相关的库来处理这种压缩格式。RAR是一种流行的文件压缩格式,由俄罗斯程序员尤金·罗谢尔(Eugene Roshal)开发,通常用于存储和传输数据。本文将深入...