这是利用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 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

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 unrar压缩_用java解压缩rar文件 de.innosystec.unrar解压缩rar文件相关推荐

  1. java 对象压缩_理解Java对象:要从内存布局及底层机制说起,话说....

    前言 大家好,又见面了,今天是JVM专题的第二篇文章,在上一篇文章中我们说了Java的类和对象在JVM中的存储方式,并使用HSDB进行佐证,没有看过上一篇文章的小伙伴可以点这里:< 这篇文章主要 ...

  2. java 字符串 压缩_用JAVA实现字符串压缩算法

    public class Test3 { /** * 用JAVA实现字符串压缩算法. 将字符串 aaabcdda 编程实现将其转换为 3a1b1c2d1a : * * @param str * 需要转 ...

  3. java tiff 压缩_使用Java ImageIO进行Tiff压缩

    我在将png转换为tiff时遇到问题.转换很顺利,但图像很大.我认为问题是我没有正确地进行压缩?任何人都有任何建议? 这是代码示例 public static void test() throws I ...

  4. java zip压缩_压缩工具

    由于rar4版本以上的无法通过java代码进行解压,采用调用本地程序来进行解压 第一步:下载winrar 第二步:配置环境变量,只需要配置到安装目录即可,,重新打开命令窗口 第三步:单个文件进行测试 ...

  5. java如何压缩html代码,java 压缩html文件

    java 压缩html文件 [2021-02-03 16:32:07]  简介: php去除nbsp的方法:首先创建一个PHP代码示例文件:然后通过"preg_replace("/ ...

  6. java web服务_将Java服务公开为Web服务

    java web服务 本教程解决了开发人员面临的最实际的情况. 大多数时候,我们可能需要将某些现有服务公开为Web服务. 在项目生命周期的不同阶段可能会遇到这种情况. 如果这是初始阶段,那么您几乎是安 ...

  7. java正则表达式 匹配()_学习Java正则表达式(匹配、替换、查找)

    import java.util.ArrayList; import java.util.regex.Matcher; import java.util.regex.Pattern; public c ...

  8. java application程序_如何Java编写的application程序像exe一样方便shy;的运行

    Java编写的application程序是否能够最终形成一个类似于exe一样的可执行文件,难道就只能用命令行运行??? ---------------------------------------- ...

  9. java核心教程_核心Java教程

    java核心教程 Welcome to Core Java Tutorial. I have written a lot on Core Java and Java EE frameworks. Th ...

最新文章

  1. Verilog赋值间延迟语句与赋值内延迟语句比较
  2. Android NDK调试定位错误
  3. gcc 参数 -fprofile-arcs -ftest-coverage作用
  4. c++ 删除文件_win7 系统电脑C盘哪些文件可以删除掉?
  5. 常见的通配符_技术干货 | 常见的mysql注入语句
  6. 北大青鸟的班主任好当吗_北大青鸟学校怎么样靠谱吗?
  7. 【转】粒子滤波简介以及相关技术探讨
  8. 《Java核心技术卷一》读书笔记(二)
  9. 0基础,如何快速学习自媒体,详细教程
  10. 新版闪讯破解无线wifi共享
  11. 部署 - 前端部署https服务,并配置安全证书
  12. python中close_python close()是什么?python close()定义及用法详解
  13. 【私有,不喜勿入】健康
  14. uniapp 启动页视频
  15. YIGO标准平台解决模态窗口不能刷新父界面的方法
  16. mac搜索不到wifi wtg_Mac电脑无法连接WiFi怎么办?教你解决无法联网的问题
  17. 数据分析您需要一个现代化的数据仓库
  18. 264Echarts - GL 路径图(Use linesGL to draw 1 million ny streets.)
  19. JAVA修炼之路的开启
  20. 微信小程序顶部渐变色实现

热门文章

  1. Java 递归实现树形菜单
  2. Autodesk ReCap-现实捕获技术
  3. DB2 license过期解决方案
  4. c# winform 无边框窗体 移动办法
  5. 如何更改Google文档的默认格式设置
  6. 在类xx中找不到 main 方法, 请将 main 方法定义为: public static void main(String[] args)否则 JavaFX 应用程序类必须....
  7. C语言abs函数与fabs函数,函数abs 和fabs
  8. 07-图6 旅游规划
  9. android.util.AndroidRuntimeException: Calling startActivity() from outside of an Activity context...
  10. 知识资源整理(持续更新)