Java实现压缩文件和加密(基于zip4j)

文章目录

  • 前言
  • 一、zip4j是什么?
  • 二、使用步骤
    • 1.引入jar包(maven中直接引入)
    • 2.本地下载jar包引用
        • 1下载jar包
        • 2在项目中添加
    • 3.代码实现
  • 总结


前言

web应用中如何对文件进行压缩,加密,你了解吗?笔者这里提供一种实现方式,仅供参考!


一、zip4j是什么?

由于java自带的zip工具不支持加密,zip4j作为一个开源的项目,解决了zip加密解密等问题

二、使用步骤

这里提供两种方式,第一种不需要下载jar包,第二种需要本地下载zip4j的jar包,下载链接在文章底部

1.引入jar包(maven中直接引入)

代码如下(示例):


        <dependency>
            <groupId>net.lingala.zip4j</groupId>
            <artifactId>zip4j</artifactId>
            <version>1.3.2</version>
        </dependency>

2.本地下载jar包引用

1下载jar包

zip4j-1.3.2下载链接
zip4j-1.3.1下载链接

2在项目中添加

在src目录下新建lib目录,将jar包添加到lib目录下
在这里插入图片描述
在pom文件中引用,注意路径

        <dependency>
            <groupId>zip4j</groupId>
            <artifactId>zip4j</artifactId>
            <version>1.3.1</version>
            <scope>system</scope>
            <systemPath>${basedir}/src/lib/zip4j-1.3.1.jar</systemPath>
        </dependency>

3.代码实现

/**
     * @Title: encrypt_zip
     * @Description:将指定路径下的文件压缩至指定zip文件,并以指定密码加密,若密码为空,则不进行加密保护
     * @param src_file 待压缩文件路径
     * @param dst_file zip路径+文件名
     * @param encode 加密密码
     * @return
     */
    public static void encrypt_zip(String src_file, String dst_file, String encode) {
        File file = new File(src_file);

        ZipParameters parameters = new ZipParameters();
        parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);//压缩方式
        parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL); // 压缩级别

        parameters.setEncryptFiles(true);
        parameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_STANDARD);//加密方式
        parameters.setPassword(encode.toCharArray());//设置密码

        try {
            ZipFile zipFile = new ZipFile(dst_file);
            zipFile.setFileNameCharset("gbk");
            zipFile.addFile(file, parameters);

        } catch (net.lingala.zip4j.exception.ZipException e) {
            e.printStackTrace();
        }

    }

总结

本地实现的话到这里就结束了,但是一般项目中不会直接调用本地文件绝对路径,一般是导出项目中的文件,这里就需要在正常的下载中间添加一个中间缓存路径用于压缩加密,具体实现方式参见我的另一篇文章

你可能感兴趣的:(java操作office,java,maven,spring,boot)