需要:junrar-0.7.jar  和 logging-1.0.4.jar  这个都可以在maven中找到很多人找jar包都去百度搜,我也是醉了,在maven中心库里搜,又安全,又简单。地址:http://search.maven.org/



package rar;

import com.github.junrar.Archive;
import com.github.junrar.rarfile.FileHeader;

import java.io.File;
import java.io.FileOutputStream;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * Created by Administrator on 2015/11/26.
 */
public class RarUtil {/**
     * 根据原始rar路径,解压到指定文件夹下.
     * @param srcRarPath 原始rar路径
     * @param dstDirectoryPath 解压到的文件夹
     */
    public static void unRarFile(String srcRarPath, String dstDirectoryPath) {if (!srcRarPath.toLowerCase().endsWith(".rar")) {System.out.println("非rar文件!");
            return;
        }File dstDiretory = new File(dstDirectoryPath);
        if (!dstDiretory.exists()) {// 目标目录不存在时,创建该文件夹
            dstDiretory.mkdirs();
        }Archive a = null;
        try {a = new Archive(new File(srcRarPath));
            if (a != null) {a.getMainHeader().print(); // 打印文件信息.
                FileHeader fh = a.nextFileHeader();
                while (fh != null) {String fileName=  fh.getFileNameW().trim();
                    if(!existZH(fileName)){fileName = fh.getFileNameString().trim();
                    }if (fh.isDirectory()) { // 文件夹
                        File fol = new File(dstDirectoryPath + File.separator
                                + fileName);
                        fol.mkdirs();
                    } else { // 文件
                        File out = new File(dstDirectoryPath + File.separator
                                + fileName.trim());
                        //System.out.println(out.getAbsolutePath());
                        try {// 之所以这么写try,是因为万一这里面有了异常,不影响继续解压.
                            if (!out.exists()) {if (!out.getParentFile().exists()) {// 相对路径可能多级,可能需要创建父目录.
                                    out.getParentFile().mkdirs();
                                }out.createNewFile();
                            }FileOutputStream os = new FileOutputStream(out);
                            a.extractFile(fh, os);
                            os.close();
                        } catch (Exception ex) {ex.printStackTrace();
                        }}fh = a.nextFileHeader();
                }a.close();
            }} catch (Exception e) {e.printStackTrace();
        }}public static boolean existZH(String str) {String regEx = "[\\u4e00-\\u9fa5]";
        Pattern p = Pattern.compile(regEx);
        Matcher m = p.matcher(str);
        while (m.find()) {return true;
        }return false;
    }public static void main(String[] args){unRarFile("d:\\desk\\sdf.rar", "d:\\desk");
    }}

java rar解压相关推荐

  1. Java代码解压RAR/ZIP文件

    pom.xml <!-- 导入zip解压包 --> <dependency><groupId>ant</groupId><artifactId&g ...

  2. java代码解压rar文件时报错,badRarArchive

    针对java代码解压rar文件时报错浅谈 1.针对所报的异常: de.innosystec.unrar.Archive setFile 警告: exception in archive constru ...

  3. java实现解压rar5

    JAVA 实现最新的winrar 5 压缩格式的解压. 最近,听到一位朋友说,要实现JAVA 服务端解压rar 文件的需求.当然,想都没想,认为很简单的活,就干了.结果,悲具了. 大家在网上找到的 J ...

  4. linux rar解压_linux命令

    文件搜索 打包和压缩文件 Linux下的多用户多任务操作系统 查看文件内容 挂载一个文件系统 磁盘空间 用户和群组 文件的权限 文件的特殊属性 RPM 包 YUM 软件包升级器 DEB 包 安装软件 ...

  5. linux rar命令没找到,Linux没有rar解压命令

    使用微软系统的同学都知道rar解压缩软件,它是一个商业的收费软件,那在免费开源的linux系统怎么解压后缀为rar的文件呢,我相信很多同学都是先把rar的文件下载到电脑本地,然后再用7-zip或者wi ...

  6. iOS关于rar解压第三方库Unrar4iOS使用总结

    作者最近的公司项目要做实现rar解压的功能,在网上找了很久貌似关于rar解压的资料很少,不过有很多人推荐一个名叫"Unrar4iOS"的第三方开源框架,于是下载并尝试使用发现该开源 ...

  7. 7z001怎么解压在安卓手机上面_安卓zip文件压缩RAR解压手机下载-安卓zip文件压缩RAR解压v1.0最新版下载...

    安卓zip文件压缩RAR解压是一款非常好用的手机压缩解压缩神器,在安卓zip文件压缩RAR解压上我们可以看到很多的实用的功能,软件可以帮助我们更好的处理我们手机中的文件,感兴趣的朋友赶紧下载安卓zip ...

  8. unrar file.rar 解压rar 问题,找不到unrar 命令。安装rar unrar流程及bug处理

    在使用unrar e file.rar 解压时报错,需要安装rar 1.安装流程 1.1 用户 如果是root用户则不需要进行切换用户,否则 切换到root用户下[权限问题] 例如:$su root ...

  9. linux安装压缩文件的工具,Linux上安装rar解压工具

    一.widonds下打包rar文件并上传 yum install lrzsz rz test.rar 二.下载并安装rar软件 2.1 下载 mkdir -p /home/oldboy/tools c ...

  10. linux 下安装rar解压软件,centos下rar解压工具的安装 rar和unrar命令使用方法

    安装rar解压工具我们需要先找到rar的工具包,rar的官方下载地址如下: //www.rarsoft.com/download 找到相对应的压缩包地址 我的是centos 64位的,我需要的地址压缩 ...

最新文章

  1. Xtrabackup对mysql全备以及增量备份实施
  2. pytorch中load和load_state_dict区别
  3. 教程之怎样清理mac系统垃圾
  4. Java Enum 枚举
  5. BZOJ1110 : [POI2007]砝码Odw
  6. 仅需10道题轻松掌握Python文件处理 | Python技能树征题
  7. 数据可视化工具的意义有哪些
  8. db2 linux 64位下载,Redhat6.2 64位 安装DB2V10.5
  9. 阿里矢量图标(字体图标)
  10. 全国行政区划数据 - JSON
  11. 数据库的基本结构三个层次
  12. nginx resolver
  13. jpress转换html5,docker-compose安装jpress(这种是war包和生成文件在宿主机,运行在docker上)...
  14. 一次线上的502错误排查问题
  15. VMware16调整了路径后界面全部变成了英文
  16. shell脚本实现分日志级别输出
  17. ping www.baidu.com出现www.a.shifen.com
  18. GC0064-51单片机手持可充电GP2Y0A21红外测距离测量报警倒车雷达防撞报警视力保护
  19. python uiautomation_python+UIAutomation简介
  20. Power Pivot关系函数

热门文章

  1. Jetson TK1 配置
  2. 排坑·IPhoneIOS中不兼容正则中的断言匹配
  3. 立创eda学习笔记二:画pcb板流程(极简入门版)
  4. MATLAB编程之PTB: 实验暂停
  5. codewars day1
  6. 微擎 人人商城 对接京东vop 对接京东商品,同步商品 地址,库存,价格,上下架等。五 (下)京东后台提交订单,通知用户...
  7. PHP之支付宝APP支付
  8. C# - 2017微软校园招聘笔试题 之 MS Recognition[待解决]
  9. android 检查更新 卡住,阴阳师安装更新包卡住怎么办_安装更新包卡住解决办法...
  10. VBA学习笔记4:将同一文件下的多个工作簿的数据汇总为一个工作表