<!-- 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和好压 直接输入解密密码来使用的更多相关文章
-
【转载】使用Winrar对压缩文件进行加密,并且给定解压密码
有时候我们从网上下载的压缩包文件,如.rar文件.zip文件等,解压的时候需要输入解压密码才可顺利解压,否则解压失败.其实像这种情况,是压缩包制作者在压缩文件的时候对压缩文件进行了加密,输入了压缩包解 ...
-
java ZIP压缩文件
问题描述: 使用java ZIP压缩文件和目录 问题解决: (1)单个文件压缩 注: 以上是实现单个文件写入压缩包的代码,注意其中主要是在ZipOutStream流对象中创建Z ...
-
Java生成压缩文件(zip、rar 格式)
jar坐标: <dependency> <groupId>org.apache.ant</groupId> <artifactId>ant</ar ...
-
java ZipOutputStream压缩文件,ZipInputStream解压缩
java中实现zip的压缩与解压缩.java自带的 能实现的功能比较有限. 本程序功能:实现简单的压缩和解压缩,压缩文件夹下的所有文件(文件过滤的话需要对File进一步细节处理). 对中文的支持需要使 ...
-
java生成压缩文件
在工作过程中,需要将一个文件夹生成压缩文件,然后提供给用户下载.所以自己写了一个压缩文件的工具类.该工具类支持单个文件和文件夹压缩.放代码: import java.io.BufferedOutput ...
-
java打包压缩文件
package com.it.simple.util; import java.io.BufferedOutputStream;import java.io.ByteArrayOutputStream ...
-
Java实现压缩文件与解压缩文件
由于工作需要,需要将zip的压缩文件进行解压,经过调查发现,存在两个开源的工具包,一个是Apache的ant工具包,另一个就是Java api自带的工具包:但是Java自带的工具包存在问题:如果压缩或 ...
-
Java读取压缩文件信息
不解压压缩文件,获取其中包含的文件,通过文件名检查是否包含非法文件.(后续再根据文件头或内容吧) zip: import java.util.zip.ZipEntry;import java.util ...
-
java zip 压缩文件
zip压缩:ZipOutputStream.ZipFile.ZipInputStream 三个类的作用 一段 java zip 压缩的代码: File dir = new File("C ...
随机推荐
-
一个神奇的POS -扫描 现场销售 开单打印票据 安卓物联网POS机 手持开单终端机 省时省力 高效准确!!
5寸高清彩屏,高端大气上档次,小巧轻便,独特的包胶防护,坚固耐用,外形精细,美观!与软件灵活对接,解决企业手工盘点,手工输单,库存管理等困难,提高准确率,提高工作效率!! 应用领域:适用于仓库.超市. ...
-
未能加载文件或程序集“System.Data.SQLite”或它的一个依赖。试图加载格式不正确的程序
Go to the IIS7 Application Pool -> advanced settings and set the 32-bit application to true.
-
网页链接qq
<a href="mqqwpa://im/chat?chat_type=wpa&uin=12345678&version=1&src_type=web& ...
-
C#动态加载树菜单
在做权限系统的时候,需要有一个树形的菜单.下图就是一个树形菜单的样式 但问题是,我们可以实现写死的树形菜单.什么是写死的?就是在前台代码中写好要加载的树形菜单是什么样子的.但是我们权限系统的要求是动态 ...
-
[luogu P2170] 选学霸(并查集+dp)
题目传送门:https://www.luogu.org/problem/show?pid=2170 题目描述 老师想从N名学生中选M人当学霸,但有K对人实力相当,如果实力相当的人中,一部分被选上,另一 ...
-
python 下划线的使用(转载:安生犹梦 新浪博客)
Python 用下划线作为变量前缀和后缀指定特殊变量. _xxx 不能用'from module import *'导入 __xxx__ 系统定义名字 __xxx 类中的私有变量名 核 ...
-
小强的HTML5移动开发之路(10)——在线画板
来自:http://blog.csdn.net/dawanganban/article/details/18094557 在这一篇文章中我们用html5来实现一个在线的画板,玩过你画我猜的朋友今天也可 ...
-
DS博客作业02—线性表
1.思维导图及学习体会 1.1第一章绪论知识点思维导图 1.2.谈谈你对线性表的认识及学习体会. 线性表最重要的就是对指针的操作,插入删除都是看指针的指向进行操作以达到改变节点,以达到目的的.对于上学 ...
-
Linux记录-文件格式
yum -y install dos2unix dos2unix filename
-
Sprint1回顾
Sprint目标 此产品为适用于小学生使用的四则运算训练软件.关于第一期Sprint冲刺的目标,我们打算实现产品的以下几点的功能: •1.初始界面设计 •2.四则基本运算算法 •3.能产生随机式子 • ...