Java解压ZIP、RAR文件

解压ZIP:

maven地址:
<groupId>org.apache.ant</groupId>
    <artifactId>ant</artifactId>
    <version>1.9.7</version>
</dependency>
public static void unzipFile(String zipFileName) throws Exception {
    try {
    File f = new File(zipFileName);
    ZipFile zipFile = new ZipFile(zipFileName,"gbk");//windows要用gbk 否则文件名中文乱码
    if((!f.exists()) && (f.length() <= 0)) {
    throw new Exception("要解压的文件不存在!");
    }
    String strPath, gbkPath, strtemp;
    File tempFile = new File(f.getParent());
    strPath = tempFile.getAbsolutePath();
    Enumeration e = zipFile.getEntries();
    while(e.hasMoreElements()){
   ZipEntry zipEnt = (ZipEntry) e.nextElement();
    gbkPath=zipEnt.getName();
    if(zipEnt.isDirectory()){
    strtemp = strPath + "/" + gbkPath;
    File dir = new File(strtemp);
    dir.mkdirs();
    continue;
    } else {
    //读写文件
    InputStream is = zipFile.getInputStream(zipEnt);
    BufferedInputStream bis = new BufferedInputStream(is);
    gbkPath=zipEnt.getName();
    strtemp = strPath + "/" + gbkPath;
    //建目录
    String strsubdir = gbkPath;
    for(int i = 0; i < strsubdir.length(); i++) {
    if(strsubdir.substring(i, i + 1).equalsIgnoreCase("/")) {
    String temp = strPath + "/" + strsubdir.substring(0, i);
    File subdir = new File(temp);
    if(!subdir.exists())
    subdir.mkdir();
    }
    }
    FileOutputStream fos = new FileOutputStream(strtemp);
    BufferedOutputStream bos = new BufferedOutputStream(fos);
    int c;
    while((c = bis.read()) != -1) {
    bos.write((byte) c);
    }
    bos.close();
    fos.close();
    }
    }
    } catch(Exception e) {
    e.printStackTrace();
    throw e;
    }
    }

解压RAR:

<dependency>
    <groupId>com.github.junrar</groupId>
    <artifactId>junrar</artifactId>
    <version>0.7</version>
</dependency>
/**
     * 解压rar格式的压缩文件到指定目录下
     * @param rarFileName 压缩文件
     * @param extPlace 解压目录
     * @throws Exception
     */
    public static void unrar(String rarFileName, String extPlace) throws Exception{
        try {
            File rar = new File(rarFileName);  
            File destinationFolder = new File(extPlace);  
            ExtractArchive extractArchive = new ExtractArchive();  
            extractArchive.extractArchive(rar, destinationFolder);  
        } catch (Exception e) {
            e.printStackTrace();
        }
    }   
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值