Zip4j开源jar包的简单使用
因为对项目突然要发送压缩加密的邮件附件,所以从网上看了一些资料说Zip4j开源框架比较好使,对中文的支持也比较好,所以从网上找了一个代码案例!自己写了一写,现在贴出来,方便以后想用的时候好找
1、
1 package com.fenghao.zip; 2 3 import java.io.File; 4 5 import java.util.ArrayList; 6 import java.util.Collections; 7 8 import net.lingala.zip4j.core.ZipFile; 9 import net.lingala.zip4j.exception.ZipException; 10 import net.lingala.zip4j.model.ZipParameters; 11 import net.lingala.zip4j.util.Zip4jConstants; 12 13 14 15 /** 16 * 对文件进行压缩和加密 17 * 对文件进行解压和解密 18 * @author fenghao 19 * 20 */ 21 public class CompressUtils { 22 23 /** 24 * 解压加密的压缩文件 25 * @param zipfile 26 * @param dest 27 * @param passwd 28 * @throws ZipException 29 */ 30 public void unZip(File zipfile,String dest,String passwd) throws ZipException{ 31 ZipFile zfile=new ZipFile(zipfile); 32 // zfile.setFileNameCharset("GBK");//在GBK系统中需要设置 33 if(!zfile.isValidZipFile()){ 34 throw new ZipException("压缩文件不合法,可能已经损坏!"); 35 } 36 File file=new File(dest); 37 if(file.isDirectory() && !file.exists()){ 38 file.mkdirs(); 39 } 40 if(zfile.isEncrypted()){ 41 zfile.setPassword(passwd.toCharArray()); 42 } 43 zfile.extractAll(dest); 44 } 45 /** 46 * 压缩文件且加密 47 * @param src 48 * @param dest 49 * @param is 50 * @param passwd 51 */ 52 public void zip(String src,String dest,boolean is,String passwd){ 53 File srcfile=new File(src); 54 //创建目标文件 55 String destname = buildDestFileName(srcfile, dest); 56 ZipParameters par=new ZipParameters(); 57 par.setCompressionMethod(Zip4jConstants.COMP_DEFLATE); 58 par.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL); 59 if(passwd!=null){ 60 par.setEncryptFiles(true); 61 par.setEncryptionMethod(Zip4jConstants.ENC_METHOD_STANDARD); 62 par.setPassword(passwd.toCharArray()); 63 } 64 try { 65 ZipFile zipfile=new ZipFile(destname); 66 if(srcfile.isDirectory()){ 67 if(!is){ 68 File[] listFiles = srcfile.listFiles(); 69 ArrayList<File> temp=new ArrayList<File>(); 70 Collections.addAll(temp, listFiles); 71 zipfile.addFiles(temp, par); 72 } 73 zipfile.addFolder(srcfile, par); 74 }else{ 75 zipfile.addFile(srcfile, par); 76 } 77 } catch (ZipException e) { 78 e.printStackTrace(); 79 } 80 81 82 } 83 /** 84 * 目标文件名称 85 * @param srcfile 86 * @param dest 87 * @return 88 */ 89 public String buildDestFileName(File srcfile,String dest){ 90 if(dest==null){//没有给出目标路径时 91 if(srcfile.isDirectory()){ 92 dest=srcfile.getParent()+File.separator+srcfile.getName()+".zip"; 93 }else{ 94 String filename=srcfile.getName().substring(0,srcfile.getName().lastIndexOf(".")); 95 dest=srcfile.getParent()+File.separator+filename+".zip"; 96 } 97 }else{ 98 createPath(dest);//路径的创建 99 if(dest.endsWith(File.separator)){ 100 String filename=""; 101 if(srcfile.isDirectory()){ 102 filename=srcfile.getName(); 103 }else{ 104 filename=srcfile.getName().substring(0, srcfile.getName().lastIndexOf(".")); 105 } 106 dest+=filename+".zip"; 107 } 108 } 109 return dest; 110 } 111 /** 112 * 路径创建 113 * @param dest 114 */ 115 private void createPath(String dest){ 116 File destDir=null; 117 if(dest.endsWith(File.separator)){ 118 destDir=new File(dest);//给出的是路径时 119 }else{ 120 destDir=new File(dest.substring(0,dest.lastIndexOf(File.separator))); 121 } 122 if(!destDir.exists()){ 123 destDir.mkdirs(); 124 } 125 } 126 127 @org.junit.Test 128 public void Test(){ 129 String src="/home/fenghao/document/书籍类资料/Maven实战 高清扫描完整版.pdf"; 130 String dest="/home/fenghao/zip/maven/123.zip"; 131 zip(src, dest, true, "123456"); 132 } 133 }
2、因为自己创建的时maven项目,所以吧jar包依赖也贴出来!
<!-- https://mvnrepository.com/artifact/net.lingala.zip4j/zip4j -->
<!-- 对压缩文件和加密的支持 -->
<dependency>
<groupId>net.lingala.zip4j</groupId>
<artifactId>zip4j</artifactId>
<version>1.3.2</version>
</dependency>
private void createPath(String dest){File destDir=null;String separator=File.separator;if(dest.endsWith(separator)){destDir=new File(dest);}else{destDir=new File(dest.substring(0, dest.lastIndexOf("/")));//确认:/ \\ 路径分割符号,第一种验证时空//使用/做路径分割时, }if(!destDir.exists()){destDir.mkdirs();}}
在Windows测试环境可行
private void createPath(String dest){
File destDir=null;
String separator=File.separator;
if(dest.endsWith(separator)){
destDir=new File(dest);
}else{
destDir=new File(dest.substring(0, dest.lastIndexOf("/")));//确认:/ \\ 路径分割符号,第一种验证时空
//使用/做路径分割时,
}
if(!destDir.exists()){
destDir.mkdirs();
}
}
转载于:https://www.cnblogs.com/nihaofenghao/p/6033231.html
Zip4j开源jar包的简单使用相关推荐
- Java常用开源jar包
Java常用开源jar包 转:http://blog.csdn.net/kevingao/article/details/8125683 activation~与javaMail有关的jar包,使用j ...
- Java 技术篇-使用poi开源jar包实现读取excel实例演示,poi-3.17.jar获取
jar 包下载: poi-3.17.jar import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.use ...
- IDEA中MAVEN项目打JAR包的简单方法
Idea中为一般的非Web项目打Jar包是有自己的方法的,网上一搜就能查到很多. 但是如果是为Maven项目打Jar包,其实是很简单的,因为maven本身就有打Jar包的命令. 最简单的方法 首先是在 ...
- 开源jar包导入查看源码
我们用Ctrl + 左键查看源码的时候往往出现以下情况,是因为没有正确的导入jar包,以及没有导入src包 下面是解决方法(从导入jar包开始): 右键项目-->build ptah--> ...
- java和opencv配置_Java——OpenCVWindows配置和项目中jar包的简单配置
1. 安装OpenCV 1.1 下载相应的OpenCV版本,解压 1.2 将 openCV的dll文件(D:\InstallPackages\OpenCV\opencv\build\java\x64) ...
- java -cp 引用多个包_Java -cp 命令行引用多个jar包的简单写法(Windows、Linux)
1.Windows下用法 在Windows上,可以使用 java your-jar-lib-fold/* your-main-class your-jar-lib-fold为存放一堆jar文件的路径. ...
- 阿里云-视频点播-SDK-安装非开源jar包:aliyun-java-vod-upload-1.4.11.jar
一.下载jar包 链接:https://pan.baidu.com/s/1z4LwHmvSou5QW9-8csThBw 提取码:1234 将lib里的全部下载下来 二.打开本地maven仓库 mvn所 ...
- 记录一次提交开源JAR包到中央仓库的过程
2019独角兽企业重金招聘Python工程师标准>>> 编写开源工程 我这次要开源的mybatis.batch插件,用于简化批量提交. 代码地址:https://github.com ...
- Java去除掉HTML里面所有标签的两种方法——开源jar包和自己写正则表达式
Java去除掉HTML里面所有标签,主要就两种,要么用开源的jar处理,要么就自己写正则表达式.自己写的话,可能处理不全一些自定义的标签.企业应用基本都是能找开源就找开源,实在不行才自己写-- 1,开 ...
最新文章
- matlab读入从文件中读取大量的数据
- 如何编写无法维护的代码_编写可维护的前端代码
- 用于弹出ModalDialog进行数据选择的控件
- 每天一道LeetCode-----数组序列,每个元素的值表示最多可以向后跳多远,计算最少跳多少次可以到达末尾
- 记一次 @Transactional不生效的问题
- 最激动人心的视觉系统其实是最枯燥乏味的
- 手把手教您解决90%的自然语言处理问题
- 相似矩阵对角化 | 找到一个可逆矩阵 P 使得 P^(-1)AP 成为一个对角矩阵
- CS61a-2020fall学习笔记
- linux 取消分区,如何在 Linux 中删除分区 | Linux 中国
- 平面设计师okr_为什么说一名优秀的设计师要懂得OKR
- iTunes备份文件路径修改方法
- 浏览器内部工作原理[译]How browsers work (转)
- 计算广告CTR预估系列(九)--NFM模型理论与实践
- python发送邮件时报: Error: need RCPT command
- matlab awgn函数加入高斯白噪声
- 定制你的语音识别-并行语音识别解码空间
- wordpress php缓存,wordpress自带的缓存功能使用介绍
- 主流数据库实时同步/实时ETL工具的比较
- 迅雷VIP尊享版系列
热门文章
- 机器学习偏差方差_机器学习101 —偏差方差难题
- 向量 矩阵 张量_张量,矩阵和向量有什么区别?
- 程序员发展应该尽早明白13个道理
- 被冻结的钱,银行可以私自处理吗?
- linux 查找文件夹_用python打造一个基于socket的文件(夹)传输系统
- php curl上传文件返回false,php curl上传文件$_FILES为空的问题
- cad移动时捕捉不到基点_硬盘或移动硬盘认不到时,应该怎样进行故障的检测才正确...
- python有没有帮助_没想到,python给我的帮助竟然这么大
- uniapp怎么调起摄像头拍视频_抖音视频怎么拍?我们总结了10个手机视频拍摄小技巧...
- android 刷windows10,微软计划在Android机上刷Windows 10