如何使用java代码对zip和rar文件进行解压呢?

戚薇 Java经验 发布时间:2022-07-08 21:50:55 阅读数:19272 1 zip操作大全
下文笔者讲述java代码解压zip和rar文件的方法分享,如下所示:
实现思路:
    解压rar文件使用junrar.jar即可
	解压zip文件使用apache的ant.jar即可实现zip文件的解压
例:
解压rar和解压zip的方法

1.引入jar包
<!-- 解压rar -->
<dependency>
	<groupId>com.github.junrar</groupId>
	<artifactId>junrar</artifactId>
	<version>3.0.0</version>
</dependency>

<!-- 解压zip -->
<dependency>
	<groupId>org.apache.ant</groupId>
	<artifactId>ant</artifactId>
	<version>1.9.4</version>
</dependency>

<!-- 单元测试 -->
<dependency>
	<groupId>junit</groupId>
	<artifactId>junit</artifactId>
	<version>4.12</version>
	<scope>test</scope>
</dependency>


2.编写处理压缩文件的类
import com.github.junrar.Archive;
import com.github.junrar.rarfile.FileHeader;
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;

import java.io.*;
import java.util.Enumeration;

public class UnZipAnRar {

    public static void unZip(File zipFile, String outDir) throws IOException {

        File outFileDir = new File(outDir);
        if (!outFileDir.exists()) {
            boolean isMakDir = outFileDir.mkdirs();
            if (isMakDir) {
                System.out.println("创建压缩目录成功");
            }
        }

        ZipFile zip = new ZipFile(zipFile);
        for (Enumeration enumeration = zip.getEntries(); enumeration.hasMoreElements(); ) {
            ZipEntry entry = (ZipEntry) enumeration.nextElement();
            String zipEntryName = entry.getName();
            InputStream in = zip.getInputStream(entry);

            if (entry.isDirectory()) {      //处理压缩文件包含文件夹的情况
                File fileDir = new File(outDir + zipEntryName);
                fileDir.mkdir();
                continue;
            }

            File file = new File(outDir, zipEntryName);
            file.createNewFile();
            OutputStream out = new FileOutputStream(file);
            byte[] buff = new byte[1024];
            int len;
            while ((len = in.read(buff)) > 0) {
                out.write(buff, 0, len);
            }
            in.close();
            out.close();
        }
    }

    public static void unRar(File rarFile, String outDir) throws Exception {
        File outFileDir = new File(outDir);
        if (!outFileDir.exists()) {
            boolean isMakDir = outFileDir.mkdirs();
            if (isMakDir) {
                System.out.println("创建压缩目录成功");
            }
        }
        Archive archive = new Archive(new FileInputStream(rarFile));
        FileHeader fileHeader = archive.nextFileHeader();
        while (fileHeader != null) {
            if (fileHeader.isDirectory()) {
                fileHeader = archive.nextFileHeader();
                continue;
            }
            File out = new File(outDir + fileHeader.getFileNameString());
            if (!out.exists()) {
                if (!out.getParentFile().exists()) {
                    out.getParentFile().mkdirs();
                }
                out.createNewFile();
            }
            FileOutputStream os = new FileOutputStream(out);
            archive.extractFile(fileHeader, os);

            os.close();

            fileHeader = archive.nextFileHeader();
        }
        archive.close();
    }
}


3.测试代码
import org.junit.Test;
import java.io.File;
import java.io.IOException;

public class UnZipAnRarTest {
    @Test
    public void getUnZipAnnRarTest() {
        String originDir = "D:\\Test\\TestFile\\";
        String zipPath = originDir + "test.zip";
        File zipFile = new File(zipPath);
        String rarPath = originDir + "new.rar";
        File rarFile = new File(rarPath);

        try {
            UnZipAnRar.unZip(zipFile, "D:\\Test\\TestFile\\Test\\");
        } catch (IOException e) {
            e.printStackTrace();
        }

        try {
            UnZipAnRar.unRar(rarFile, "D:\\Test\\TestFile\\测试\\");
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}

版权声明

本文仅代表作者观点,不代表本站立场。
本文系作者授权发表,未经许可,不得转载。

本文链接: https://www.Java265.com/JavaJingYan/202207/16572883323934.html

最近发表

热门文章

好文推荐

Java265.com

https://www.java265.com

站长统计|粤ICP备14097017号-3

Powered By Java265.com信息维护小组

使用手机扫描二维码

关注我们看更多资讯

java爱好者