JAVA使用 java-unrar-0.3.jar 解压rar,并且解决中文乱码

 

需要引入java-unrar-0.3.jar 和 commons-logging-1.1.1.jar

 

package com.test;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import de.innosystec.unrar.Archive;
import de.innosystec.unrar.exception.RarException;
import de.innosystec.unrar.rarfile.FileHeader;

public class RARUtil {
	
	public  static void unrar(String srcPath,String unrarPath) throws RarException, IOException{
		unrar(new File(srcPath), unrarPath);
	}
	
	public  static void unrar(File srcFile,String unrarPath) throws RarException, IOException{
		if(null == unrarPath || "".equals(unrarPath)){
			unrarPath = srcFile.getParentFile().getPath();
		}
		System.out.println("unrar file to :"+unrarPath);
        FileOutputStream fileOut;
        File file;    
        Archive rarfile = new Archive(srcFile);
        FileHeader entry = rarfile.nextFileHeader();
        while(entry!=null){
        	
        	String entrypath = "";
        	if(entry.isUnicode()){//解決中文乱码
        		entrypath = entry.getFileNameW().trim();
        	}else{
        		entrypath = entry.getFileNameString().trim();  
        	}

        	entrypath=entrypath.replaceAll("\\\\", "/");
        	
        	file = new File(unrarPath+"/"+entrypath);
        	System.out.println("unrar entry file :"+file.getPath());
        	if(entry.isDirectory()){
        		file.mkdirs();
        	}else{
            	File parent = file.getParentFile();
                if(parent!=null && !parent.exists()){
                    parent.mkdirs();
                }
                fileOut = new FileOutputStream(file);
                rarfile.extractFile(entry, fileOut);
                fileOut.close();
        	}        	
        	entry = rarfile.nextFileHeader();
        }
        rarfile.close();
        
	}


}


 

展开阅读全文
©️2020 CSDN 皮肤主题: Age of Ai 设计师: meimeiellie 返回首页
实付0元
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值