文件解压专题-1:支持Gzip、Rar5、rar、7z、tar.gz、zip

这篇博客详细介绍了如何使用Java进行多种压缩格式(如Gzip、Rar5、rar、7z、tar.gz、zip)的解压操作。内容包括POM依赖的引入,解压工具类和接口的设计,以及具体的应用示例,通过递归类实现了解压过程的封装。
摘要由CSDN通过智能技术生成

文件解压专题:支持Gzip、Rar5、rar、7z、tar.gz、zip

POM依赖

<dependency>
    <groupId>net.sf.sevenzipjbinding</groupId>
    <artifactId>sevenzipjbinding</artifactId>
    <version>16.02-2.01</version>
</dependency>
<dependency>
    <groupId>net.sf.sevenzipjbinding</groupId>
    <artifactId>sevenzipjbinding-all-platforms</artifactId>
    <version>16.02-2.01</version>
</dependency>

工具类

public class ProjectUtils {
   
    private static final Logger LOGGER = LoggerFactory.getLogger(ProjectUtils.class);

    private static Set<String> suffixSet;

    // 最大支持压缩包内全文件总大小
    private long maxUncompressedSize = 5120;

    static {
   
        suffixSet = Arrays.stream("zip,rar,gz,7z".split(",")).collect(Collectors.toSet());
    }

    /**
     * 字节数大小比较
     *
     * @param fileSize 大小byte
     * @return true or false
     */
    public boolean compareToMaxUnSize(long fileSize) {
   
        return fileSize > getSizeByte(maxUncompressedSize);
    }

    /**
     * MB转byte
     *
     * @param size 大小MB
     * @return 大小byte
     */
    public long getSizeByte(long size) {
   
        return (long) (size * Constants.TRANSLATING_SIZE);
    }

    /**
     * 文件后缀校验
     *
     * @param fileName 文件名
     * @return 是否合规
     */
    public boolean isNotNormFileSuffix(String fileName) {
   
        if (StringUtils.isBlank(fileName)) {
   
            return true;
        }
        String suffix = fileName.substring(fileName.lastIndexOf(Constants.DOT) + 1);
        return !suffixSet.contains(suffix.toLowerCase(Locale.US));
    }

    /**
     * 获取时间戳
     *
     * @return 时间戳
     */
    public long getTimestamp() {
   
        return System.currentTimeMillis();
    }

    /**
     * 删除临时文件
     *
     * @param taskFiles 文件
     */
    public void deleteTemFile(File taskFiles) {
   
        if (!taskFiles.exists()) {
   
            return;
        }
        try {
   
            FileUtils.forceDelete(taskFiles);
        } catch (IOException e) {
   
            LOGGER.info("Delete temp file false. msg: {}", e.getMessage());
        }
    }
}

解压接口定义


public interface UploadService {
   
    /**
     * 编码格式
     */
    String ENCODING_GBK = "GBK";

    /**
     * tar.gz文件后缀
     */
    String TAR_GZ = "tar.gz";

    /**
     * .gz文件后缀
     */
    String GZ = ".gz";

    /**
     * 上传文件类型判断
     *
     * @param fileType 文件类型
     * @return 是否符合格式
     */
    boolean isOwn(FileType fileType);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值