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