`
aben328
  • 浏览: 1459407 次
  • 性别: Icon_minigender_1
  • 来自: 广东
社区版块
存档分类

用java解压缩rar文件 de.innosystec.unrar解压缩rar文件

    博客分类:
  • java
阅读更多
用java解压缩rar文件
2009-10-23 14:11

这是利用de.innosystec.unrar解压缩rar文件.(他不支持中文和日文.下面是经本人改进后支持双字节的.同时实现了跨平台)

/**
* unRar method, extract rar file
*
* @param file_src Archive File
* @param extractPath extract Path
* @return boolean
* @exception Exception
*/
private static boolean unRar(File file_src,String extractPath) {

String os = System.getProperty(Const.getString(propertyOS)).toLowerCase();

File extractToFolder = new File(extractPath);

ReadOnlyAccessFile readOnlyAccessFile=null;
Archive archive=null;
try {

readOnlyAccessFile = new ReadOnlyAccessFile(
file_src);
archive = new Archive(readOnlyAccessFile);
final List<FileHeader> fileHeaders = archive.getFileHeaders();

int actualaSize = 0;
for (FileHeader fileHeader : fileHeaders){  

    //String fileNameString=fileHeader.getFileName();//这是英文情况
//如果是象日文和中文那样的双字节字.get filenamebyte and remove error code
byte[] filebytes=fileHeader.getFileNameByteArray();  

int endflg=0;
for(int i=0;i<filebytes.length;endflg++,i++){
if(filebytes[i]==0){
break;
}
}
//get filename
String fileNameString=new String(filebytes,0,endflg,"SJIS");    //这是日语编码.如果是中文系统就换成相应的编码.

if(os!=null && !os.startsWith("windows")){//linux,repalce "\" to "/"
fileNameString=fileNameString.replace("\\", System.getProperty("file.separator", null));
}

File unpackedFile = new File(extractToFolder, fileNameString);

File parentFolder = unpackedFile.getParentFile();

//create the parents tree
parentFolder.mkdirs();
if(Integer.toHexString(fileHeader.getUnpMethod()).equals("30")
& (Integer.toHexString(fileHeader.getUnpVersion()).equals("14"))){
actualaSize++;
}else{
FileOutputStream out=null;
try {
out = new FileOutputStream(unpackedFile);
archive.extractFile(fileHeader,out );
actualaSize++;
} catch (FileNotFoundException e) {
unpackedFile.delete();
parentFolder.delete();
}finally{
out.close();       
}

}    
}
} catch (Exception e) {    

extractToFolder.delete();
return false;

}finally{
try {
readOnlyAccessFile.close();
} catch (Exception e1) {
;
}
}  
return true;
}

分享到:
评论

相关推荐

    Java带密码解压缩RAR压缩包(内附代码)

    本文将详细介绍如何使用Java实现这个功能,特别是处理带密码保护的RAR文件,同时支持中文文件名,并能在Windows和Linux平台上运行。 首先,我们需要一个库来处理RAR格式,因为Java标准库并不直接支持RAR解压缩。在...

    java 压缩/解压 .zip/.rar/.tar 文件

    在提供的代码中,可以看到使用了`de.innosystec.unrar.Archive`类来解压缩RAR文件,但请注意,这个库可能需要额外的授权。 ```java Archive archive = new Archive(new File("input.rar")); archive.extractAll(...

    解压 RAR,使用unrar.dll C#

    首先,unrar.dll是一个动态链接库,由RAR文件格式的开发者RAR Labs提供,用于在非RAR原生应用(如C#)中执行RAR文件的解压缩操作。在C#中,我们可以使用P/Invoke技术(Platform Invoke)调用这个DLL来实现对RAR文件...

    java-unrar-解压rar.rar

    本文将深入讲解如何使用Java-unrar库来实现RAR文件的解压缩,并探讨相关的编程概念和技术。 首先,Java-unrar库基于RarFile类,提供了对RAR文件格式的支持。这个类能够读取RAR头部信息,识别文件和目录,并提供了解...

    java-unrar-0.5.jar

    Java-unrar-0.5.jar 是一个专门为Java开发者设计的库,用于处理RAR文件格式,实现了RAR文件的读取和解压功能。这个库对于那些需要在Java应用程序中集成RAR文件支持的开发者来说是一个非常实用的工具。下面将详细介绍...

    unrar.dll unrar.dll unrar.dll

    "unrar.dll" 是一个动态链接库(Dynamic Link Library)文件,主要在Windows操作系统中用于支持RAR文件的解压缩功能。RAR是一种流行的压缩格式,由WinRAR软件开发公司创建,用于减少文件大小以便于存储和传输。unrar...

    java解压缩rar

    本篇文章将详细探讨如何使用Java来实现RAR文件的解压缩,以及相关的技术要点。 首先,Java标准库并不直接支持RAR文件的解压缩,因此我们需要依赖第三方库。这里提到的`RarUtil.java`可能是用于处理RAR文件的一个...

    UnRarOCX.rar_unrar_unrarocx.o_解压缩

    通过调用这个控件,VB6的应用程序可以直接对RAR文件进行解压缩操作,包括读取RAR文件内容、提取文件、解压到指定目录等。这对于那些需要处理RAR压缩包的软件来说,无疑是一个强大的后盾。开发者无需深入学习RAR文件...

    java解压rar 包含java-unrar-0.3.jar

    1. **RAR文件解析**:`java-unrar`库能够解析RAR文件头信息,获取文件名、压缩和未压缩大小、时间戳等元数据。 2. **文件提取**:你可以通过库提供的API指定RAR文件中的某个文件或目录进行提取,并保存到本地文件...

    java-unrar-0.3.zip

    Java-unrar-0.3.zip 是一个专门为Java开发者设计的RAR文件解压缩工具包,它允许程序员在Java环境中处理RAR格式的压缩文件,而无需在系统中安装WinRAR这样的外部软件。这个工具包的主要功能是提供API接口,使得Java...

    unrar_vc.rar_rar压缩源码_unrar_压缩文件解密_压缩源码_压缩解压缩

    "unrar_vc.rar"是一个包含RAR解压源码的压缩包,主要用于帮助开发者理解RAR文件格式的工作原理,并实现RAR文件的解密和解压缩功能。这里我们将深入探讨RAR格式、unrar库以及与压缩和解密相关的技术。 1. RAR格式...

    JAVA解压缩ZIP或RAR格式的文件

    在工具方面,除了编写自己的解压缩代码,还可以使用已有的命令行工具,如`unzip`和`unrar`,通过Java的`Runtime.getRuntime().exec()`方法调用这些工具进行解压缩,但这通常适用于简单的场景,且跨平台性较差。...

    java-unrar-0.3.jar以及commons-logging-1.1.1.jar

    这里提到的"java-unrar-0.3.jar"和"commons-logging-1.1.1.jar"是两个关键的Java库,它们提供了处理RAR文件和日志管理的能力。 1. **java-unrar-0.3.jar**: 这是一个开源的Java库,允许开发者在Java程序中读取和...

    javaandroid可用的ziprar解压缩代码实现.rar

    在Android平台上,对ZIP和RAR文件进行解压缩是常见的需求,比如在安装APK应用、更新资源文件或者处理用户上传的数据时。JavaAndroid可用的ziprar解压缩代码实现提供了这样的功能,但请注意,由于文件数量多,可能...

    java zip rar(区分有无密码的RAR文件) gz ftp工具类

    本文将详细介绍标题和描述中提到的几个关键知识点:Java中的zip、rar(包括处理带密码的RAR文件)、gz压缩,以及FTP工具类的使用。 1. **Java ZIP压缩与解压缩**: Java内置的`java.util.zip`包提供了处理ZIP文件...

    用Unrar.dll解压rar文件

    使用rar官方提供的unrar.dll的接口操作rar压缩包,对其进行解压操作.本程序由官方给出的汇编示例程序修改而来,已通过测试. 程序使用C++编写,IDE:VS2008 注意:本程序实际上是一个DX调试模板程序,rar的实现部分在...

    Linux下如何解压.zip和.rar文件.doc

    在 Linux 中解压.zip 和.rar 文件可以使用 unzip 和 unrar 程序,压缩文件到.zip 和.rar 文件可以使用 zip 和 rar 程序。通过这些命令,可以轻松地处理.zip 和.rar 文件,从而提高工作效率和生产力。

    java-unrar.zip

    10. **性能优化**:虽然Java-unrar是用纯Java实现的,但其性能经过优化,能够有效地处理RAR文件,尤其是在处理大量小文件时。 为了使用Java-unrar库,开发者需要将其添加到项目依赖中,通常通过Maven或Gradle等构建...

    java-unrar-0.5.jar、commons-logging-1.2.jar和ant-1.6.5.jar

    例如,使用Ant定义一个构建脚本,它首先调用`java-unrar-0.5.jar`来解压RAR文件,然后利用`commons-logging-1.2.jar`记录解压过程中的日志信息。这种组合方式既实现了RAR文件的解压,又保证了日志记录的便利性,同时...

    java-unrar-解压Winrar例子

    使用 `java-unrar` 可以轻松地集成到任何 Java 应用程序中,实现对 RAR 文件的操作需求。 #### 二、关键概念与术语 1. **Archive**: 表示一个 RAR 归档文件。 2. **FileHeader**: 存储有关归档文件中的每个文件的...

Global site tag (gtag.js) - Google Analytics