java如何解压rar文件

2025-09-29 03:18:28

1、前期准备,下载jar包(自行百度,网上都有这些资源):

1.junrar-0.7.jar --rar压缩关键包

2.apache-commons-logging.jar 这个包是junrar-0.7.jar自己需要用到的包,如果不引入此包会提示如图所示的错误。

java如何解压rar文件

2、准备一个rar文件做测试,例子的rar文件包含两个文件,一个文件夹

java如何解压rar文件

3、引入java包,输入代码:

/**

* @param rarFile rar文件路径

* @param savePath 要解压的路径

*/

public static void Rar(String rarFile,String savePath) {

//判断是否rar文件

if(!rarFile.endsWith(".rar")) {

System.err.println("打开的文件不是rar文件!");

return;

}

try {

FileOutputStream fos = null;    

//创建一个rar档案文件

Archive rarArchive = new  Archive(new File(rarFile));

//判断是否有加密

if(rarArchive != null) {

if(rarArchive.isEncrypted()) {

rarArchive.close();//关闭资源

return;

}

FileHeader fileHeader = rarArchive.nextFileHeader();

while(fileHeader != null) {

if(!fileHeader.isDirectory()){    

//从压缩文件中解压出来的文件名,有可能带目录的文件名

               String name = fileHeader.getFileNameString().trim();    

                       String outPutFileName = savePath +"\\"+name; 

                       

                       //分离文件名,为了创建目录

                   File dir = new File(outPutFileName.substring(0, outPutFileName.lastIndexOf("\\")));  

                   //创建文件夹    

                   if(!dir.exists()||!dir.isDirectory()){    

                      dir.mkdirs();  

                   }    

                   

                   fos = new FileOutputStream(new File(outPutFileName));    

                   //保存解压的文件

                   rarArchive.extractFile(fileHeader, fos);   

                   //关闭资源

                   fos.close();    

                   fos = null;    

               }    

fileHeader = rarArchive.nextFileHeader();  

}

}

rarArchive.close();//关闭资源

} catch (RarException e) {

e.printStackTrace();

} catch (IOException e) {

e.printStackTrace();

}   

}

4、运行测试:

public static void main(String[] args) {

Rar("d:\\Users\\Administrator\\Desktop\\rar\\rarFile.rar", "d:\\Users\\Administrator\\Desktop\\rar");

}

java如何解压rar文件

声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢