<!-- https://mvnrepository.com/artifact/net.lingala.zip4j/zip4j -->
<dependency>
<groupId>net.lingala.zip4j</groupId>
<artifactId>zip4j</artifactId>
<version>1.3.2</version>
</dependency>

或者下载zip4j-1.3.2.jar

以下是对文件压缩的方法,这里只是单个文件压缩,多个变通一下就可以。

package com.yggdrasill.foura.web.sysadmin.backup.service;

import net.lingala.zip4j.core.ZipFile;
import net.lingala.zip4j.exception.ZipException;
import net.lingala.zip4j.model.ZipParameters;
import net.lingala.zip4j.util.Zip4jConstants; import java.io.*;
import java.util.ArrayList; public class ZipComplexCipherUtil {
/**
* 加密1,winrar,好压2345可直接输入密码解压
* 根据filepath读取文件并加密返回
*/
public static void zipFileAndEncrypt(String filePath,String zipFileName,String password) {
try {
ZipParameters parameters = setParam(password);
//压缩文件,并生成压缩文件
ArrayList<File> filesToAdd = new ArrayList<File>();
File file = new File(filePath);
filesToAdd.add(file); ZipFile zipFile = new ZipFile(zipFileName);
zipFile.addFiles(filesToAdd, parameters);//this line does works
System.err.println("end");
} catch (ZipException e) {
e.printStackTrace();
}
} /**
* 加密1,winrar,好压2345可直接输入密码解压
*/
public static void zipFileStream(InputStream is,String zipFileName,String password) {try {
ZipParameters parameters = setParam(password);
//addStream,多设置两个参数,缺一不可
parameters.setFileNameInZip("yourfilename.xlsx");
parameters.setSourceExternalStream(true); ZipFile zipFile = new ZipFile(zipFileName);
zipFile.addStream(is, parameters);
} catch (ZipException e) {
e.printStackTrace();
}
}
public static ZipParameters setParam(String password){
//设置压缩文件参数
ZipParameters parameters = new ZipParameters();
//设置压缩方法
parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);
//设置压缩级别
parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);
//设置压缩文件是否加密
parameters.setEncryptFiles(true);
//设置aes加密强度
parameters.setAesKeyStrength(Zip4jConstants.AES_STRENGTH_256);
//设置加密方法
parameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_AES);
//设置密码
parameters.setPassword(password.toCharArray());
return parameters;
} public static void main(String[] args) throws Exception {
try{
long l1 = System.currentTimeMillis(); // //加密,addFile
// ZipComplexCipherUtil.zipFileAndEncrypt("D:\\aaa\\zhmm_db.xlsx","D:\\aaa\\ccc.zip","123"); // 加密,addStream
InputStream in = new FileInputStream("D:\\aaa\\zhmm_db.xlsx");
ZipComplexCipherUtil.zipFileStream(in,"D:\\aaa\\ccc.zip","123"); long l2 = System.currentTimeMillis();
System.out.println((l2 - l1) + "毫秒.");
System.out.println(((l2 - l1) / 1000) + "秒.");
}catch(Exception ex){
ex.printStackTrace();
} }
}

java对压缩文件进行加密,winrar和好压 直接输入解密密码来使用的更多相关文章

  1. 【转载】使用Winrar对压缩文件进行加密,并且给定解压密码

    有时候我们从网上下载的压缩包文件,如.rar文件.zip文件等,解压的时候需要输入解压密码才可顺利解压,否则解压失败.其实像这种情况,是压缩包制作者在压缩文件的时候对压缩文件进行了加密,输入了压缩包解 ...

  2. java ZIP压缩文件

    问题描述:     使用java ZIP压缩文件和目录 问题解决:     (1)单个文件压缩 注:     以上是实现单个文件写入压缩包的代码,注意其中主要是在ZipOutStream流对象中创建Z ...

  3. Java生成压缩文件(zip、rar 格式)

    jar坐标: <dependency> <groupId>org.apache.ant</groupId> <artifactId>ant</ar ...

  4. java ZipOutputStream压缩文件,ZipInputStream解压缩

    java中实现zip的压缩与解压缩.java自带的 能实现的功能比较有限. 本程序功能:实现简单的压缩和解压缩,压缩文件夹下的所有文件(文件过滤的话需要对File进一步细节处理). 对中文的支持需要使 ...

  5. java生成压缩文件

    在工作过程中,需要将一个文件夹生成压缩文件,然后提供给用户下载.所以自己写了一个压缩文件的工具类.该工具类支持单个文件和文件夹压缩.放代码: import java.io.BufferedOutput ...

  6. java打包压缩文件

    package com.it.simple.util; import java.io.BufferedOutputStream;import java.io.ByteArrayOutputStream ...

  7. Java实现压缩文件与解压缩文件

    由于工作需要,需要将zip的压缩文件进行解压,经过调查发现,存在两个开源的工具包,一个是Apache的ant工具包,另一个就是Java api自带的工具包:但是Java自带的工具包存在问题:如果压缩或 ...

  8. Java读取压缩文件信息

    不解压压缩文件,获取其中包含的文件,通过文件名检查是否包含非法文件.(后续再根据文件头或内容吧) zip: import java.util.zip.ZipEntry;import java.util ...

  9. java zip 压缩文件

    zip压缩:ZipOutputStream.ZipFile.ZipInputStream 三个类的作用 一段 java  zip  压缩的代码: File dir = new File("C ...

随机推荐

  1. ubuntu16.04重置root密码

    问题描述: 一个用户不能G附加多个用户组,在centos没有问题的.具体的还不清楚 问题解决:   重启进入启动项修改启动参数进入root中设置密码 参考: https://www.cnblogs.c ...

  2. django admin-过滤器

    django框架的admin模块,通过list_filter提供给用户自定义分类查询的接口,并且我们可以在原有类的基础上扩展出符合自身应用场景的过滤器. 定义模型 以 Student 模型为准,管理类 ...

  3. 谈谈OAuth1,OAuth2异同

    ##一.写在前面在收集资料时,我查询和学习了许多介绍OAuth的文章,这些文章有好有坏,但大多是从个例出发.因此我想从官方文档出发,结合在stackoverflow上的一些讨论,一并整理一下.整理的内 ...

  4. 缓存注解@Cacheable、@CacheEvict、@CachePut使用及注解失效时间

    从3.1开始,Spring引入了对Cache的支持.其使用方法和原理都类似于Spring对事务管理的支持.Spring Cache是作用在方法上的,其核心思想是这样的:当我们在调用一个缓存方法时会把该 ...

  5. Unicode字符集的由来

    *:first-child { margin-top: 0 !important; } .markdown-body>*:last-child { margin-bottom: 0 !impor ...

  6. NAT实验

    实验内容 实验拓扑   实验编址 实验步骤1.基础配置根据编址表配置,检测ping 2.配置静态NAT在公司网关路由器R1上配置访问外网的默认路由 由于内网使用的都是私有IP地址,员工无法直接访问公网 ...

  7. C语言开发具有可变长参数的函数的方法

    学习交流可加 微信读者交流①群 (添加微信:coderAllen) 程序员技术QQ交流①群:736386324 --- 前提:ANSI C 为了提高可移植性, 通过头文件stdarg.h提供了一组方便 ...

  8. [POJ2083] Fracal

    Description A fractal is an object or quantity that displays self-similarity, in a somewhat technica ...

  9. java大附件上传,支持断点续传

    一. 功能性需求与非功能性需求 要求操作便利,一次选择多个文件和文件夹进行上传:支持PC端全平台操作系统,Windows,Linux,Mac 支持文件和文件夹的批量下载,断点续传.刷新页面后继续传输. ...

  10. ssh2

    UserBiz public interface UserBiz { public List<User> list(User user); public int add(User user ...