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文件,压缩包内包含源码、Jar包、依赖包和示例程序,也可以从http://code.google.com/p/java-unrar/downloads/list这里下载支持密码的unrar项目(包括源码和jar包),其依赖包也很容易搜到。 RAR 密码
一个用java实现解压RAR压缩文件的例子,由于RAR的压缩算法被专利,所以借助了第三方的包(此文件里包含三方包)。
java程序,压缩与解压rar文件. java程序,压缩与解压rar文件.
Java解压RAR文件,压缩包内包含源码、Jar包、依赖包和示例程序,也可以从http://code.google.com/p/java-unrar/downloads/list这里下载支持密码的unrar项目(包括源码和jar包),其依赖包也很容易搜到。
java上传文件 实时获取上传进度 上传RAR,ZIP 并指定解压路劲 上传之后会按照路劲进行解压
使用java解压带密码的rar压缩文件,解压目录下所有的rar文件
使用Java解压文件 支持RAR5,Zip,7z ,代码只实现了这个三种,但是要想支持更多的可以查看代码。 支持跨平台。 以前的通用java解压都是坑人的,无语了。
NULL 博文链接:https://lbovinl.iteye.com/blog/2389307
java 解压zip,rar文件 ,java 解压缩包,把压缩包的文件及文件夹的子文件全部压到指定目录
用java实现rar文件的压缩解压。
Java批量解压RAR或zip文件,压缩包内包含包括源码和jar包。 如发现其他人或组织有商用目的,必追究其法律责任。
java项目中常使用到的工具类:zip压缩解压缩、rar解压(有密码的文件)、gz解压、FTP上传与下载
jUnrar解压rar文件例子 以及java-unrar-0.3.jar类库
java实现的解压与压缩的类 其中有zip和rar类型的 还包括了所需的架包
Java解压ZIP和RAR格式文件_所需资源,本资源是博客中所需文件,故不要过多积分,以方便技术人员解决问题,而且方便下载。
java rar解压工具类 // 第一个参数是需要解压的压缩包路径,第二个参数参考JdkAPI文档的RandomAccessFile //r代表以只读的方式打开文本,也就意味着不能用write来操作文件
java 解压 .rar 文件 人头担保可用 下载解压后 Archive.java 里面有main方法 修改即可
java解压zip或rar压缩文件源码和jar包
java 压缩/解压 .zip/.rar/.tar 文件,大家一起讨论,学习 已实现zip压缩/解压,rar解压