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();
        }
    }   
时间: 2024-10-27 08:29:14

Java解压ZIP、RAR文件的相关文章

java解压zip文件至指定文件夹

前面,笔者讲到.如何把文件打包为zip包,那么反过来怎么把zip文件包解压为正常文件呢?把zip包解压为正常文件包,要比把文件打包为zip简单一点.因为存在多级文件的压缩,却不存在多级文件的解压缩.也就是说,压缩时,你要把所有文件都塞到压缩包里.而解压缩只需要解压一级,压缩包里面的压缩文件则不必理会.直接上代码喽: /** * 解压文件 * @param zipPath 要解压的目标文件 * @param descDir 指定解压目录 * @return 解压结果:成功,失败 */ @Suppr

java 解压 zip 包并删除

需求是这样的,  在服务器上有 运营上传的zip 包,内容是用户的照片,我需要做的是 获取这些照片上传,并保存到 数据库. 这里面的 上传照片,保存数据库都不难,主要问题是解压zip包,和删除zip 包,以及 解压后的文件. 之前在网上找的解压的文件的代码,都存在同一个问题,就是解压之后,无法删除 zip 包.查百度说是 资源占用,可是我已经把所有的流都关闭了哇. 我把解压和删除分成两部分用 jUnit  测试:   第一次测试解压,并不删除包:第二次只删除包.我发现,解压方法和删除方法在同一个

PHP 的解压缩ZipArchive中的extractTo()方法 LINUX+nginx环境中解压zip时文件丢失的问题

在项目中要用ZipArchive解压ZIP文件,起初測试环境在WINDOWS平台中,測试通过,换到 LINUX+nginx 的环境中时 就出问题了(ZIP包中有文件和目录一共3百多个文件,大部分是带汉字的文件名称),问题的现象是:不带汉字的文件解压没有问题,另外有部分带汉字和数字字母的文件解压没有问题,然后其它纯文字的文件名称就丢失了,也没有报错,最后把问题定位到了extractTo()方法,这种方法尼玛是个封装的方法,看不到实际的源码. 可是,发现 for($i = 0; $i < $zip-

JAVA解压ZIP文件

import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.util.Enumeration; import java.util.zip.ZipEntry; import

java解压zip压缩包

package com.spring.mvc.zip; import java.io.File;import java.io.FileOutputStream;import java.io.InputStream;import java.io.OutputStream;import java.util.Enumeration;import java.util.zip.ZipEntry; import org.apache.tools.zip.ZipFile; public class zip {

linux命令解压压缩rar文件

一.widonds下打包rar文件并上传 yum install lrzsz rz test.rar 二.下载并安装rar软件 2.1 下载 mkdir -p /home/oldboy/tools cd /home/oldboy/tools wget http://www.rarlab.com/rar/rarlinux-3.8.0.tar.gz 2.2 安装 tar zxvf rarlinux-3.8.0.tar.gz cd rar make make install 三.rar命令语法 将/e

解压.ZIP分卷文件(亲测可用)

下载了一个zip压缩包分成了十个,搜了一个解压缩方法,记录备用. 文件如下: 第一步:当前文件目录下运行cmd(tips:在活动窗口上的地址栏直接输入cmd回车即可) 第二步:输入合并命令 >>> copy /B *.zip.001+*.zip.002+... 等待合并,即分卷全部走一遍 第三步:再次用winrar即可解压该文件了. 合并前: 合并后: 可以看到该文件已经由合并前的700多兆变成了6G多. 原文地址:https://www.cnblogs.com/sinoaccer/p/

ubuntu下解压zip rar中文字符乱码的问题

如题,解压zip rar中文乱码的问i题一直困扰着我,每次都要到window系统下解压,很是不方便,今天终于把这类问题解决了.整理总结分享如下 一 .    解决 Rar 压缩文件乱码问题 Rar 压缩在 Ubuntu 下可能出现乱码,这是由于安装了 rar 软件包(开源 Rar 压缩格式解压工具), 解决方法是安装闭源的 unrar 软件包,在终端依次输入以下命令即可: sudo apt-get remove rar sudo apt-get install p7zip-full p7zip-

Java解压上传zip或rar文件,并解压遍历文件中的html的路径

1.本文只提供了一个功能的代码 public String addFreeMarker() throws Exception { HttpSession session = request.getSession(); User user = (User) session.getAttribute(Constant.USER_SESSION_KEY); String realName = user.getRealName(); System.out.println("--------获取登录用户信