java实现对常用.ZIP , .TAR, .TAR.BZ2, .BZ2 ,.TAR.GZ ,.GZ格式文件的解压。
首先需要引入maven依赖,这里使用的是Apache的压缩工具包common-compress,改工具包支持解压、压缩,此代码中我列举出一个zip的压缩示例,其他格式的只需切换改格式对应的流即可。
对于RAR格式文件的解压,目前该工具包还不支持,希望大家做过的可以多多交流。
org.apache.commons
commons-compress
1.19
import org.apache.commons.compress.archivers.tar.TarArchiveEntry;
import org.apache.commons.compress.archivers.tar.TarArchiveInputStream;
import org.apache.commons.compress.archivers.zip.ZipArchiveEntry;
import org.apache.commons.compress.archivers.zip.ZipArchiveInputStream;
import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream;
import org.apache.commons.compress.compressors.bzip2.BZip2CompressorInputStream;
import org.apache.commons.compress.compressors.gzip.GzipCompressorInputStream;
import org.apache.commons.compress.utils.IOUtils;
import java.io.*;
/**
* @author :zhangzhiyong
* @description: java实现常见文件格式的解压与压缩
* 支持.ZIP .TAR .TAR.BZ2 .BZ2 .TAR.GZ .GZ
* 其他格式compress包也支持,在此基础上开发即可
* 另外压缩文件只写了ZIP压缩的方法zipCompression,其他的格式类似,换成对应的文件流即可。
* 暂不支持RAR压缩格式,RAR可以用junrar的工具包,但是有缺陷:
* 其一:如果压缩文件中有中文名字的文件夹,解压以后文件夹名字是乱码,但是不影响文件夹里面的文件;
* 其二:最新 WinRar 压缩产生的 .rar 文件可能会无法解压。
* 缺陷原因:rar 有版权,有些东西没有公开,对解压有一些限制,即使其他解压包也可能有问题,但是建议尝试。
* @date :2020/7/1 20:44
*/
public class CompressionFileUtil {
/**
* @param filePath 需要解压的zip文件的完成路径。
* @param unzipPath 解压过后生成文件的存放路径
*