zip4j之加压解压
最近看同事搞个文件打包,搞了大半天,还是有问题!嗨~~
网上明明有现成的,偏偏要自己写!
下面是基于zip4j实现加压解决的简单工具类
package com.learcher.zip; import java.io.File;
import java.util.List; import net.lingala.zip4j.core.ZipFile;
import net.lingala.zip4j.exception.ZipException;
import net.lingala.zip4j.model.FileHeader;
import net.lingala.zip4j.model.ZipParameters;
import net.lingala.zip4j.util.Zip4jConstants; /**
* @Code<code>ZipUtils</code>
* @Comments
* <p>在线加压zip与解压zip</p>
* <p>依赖第三方jar包:zip4j_1.3.2.jar</p>
* <p>jar 来源:http://maven.outofmemory.cn/net.lingala.zip4j/zip4j/1.3.2/
* @CreateDate 2017-10-14 下午3:23:02
* @author learcher
* @modifyDate
* @modifier
* @version 1.0a
* @since jdk1.6
*/
public class ZipUtils { /**
* 解压密码
*/
private static String PASSWORD=""; public static void main(String[] args) throws ZipException {
String zipFromFile = "E:/temp/tmp/需要压缩的文件或目录";
String zipToFile = "E:/temp/tmp/压缩后的文件地址.zip";
// 压缩文件夹或文件到指定目录下
ZipUtils.zip(zipFromFile, zipToFile);
// ZipUtils.zip(zipFromFile, zipToFile, true);
// ZipUtils.zip(zipFromFile, zipToFile, "password"); String unZipFromFile = "E:/temp/tmp/需要加压文件.zip";
String unZipToPath = "E:/temp/tmp/加压后存放目录";
// 解压文件到指定目录
// ZipUtils.unZip(unZipFromFile);
// ZipUtils.unZip(unZipFromFile, unZipToPath);
// ZipUtils.unZip(unZipFromFile, unZipToPath, "password"); } /**
* @createDate:2017-10-14 下午4:50:03
* @author: learcher
* @Description:
* <p>加压ZIP文件</p>
* @param fromFile -> 需要加压的ZIP文件地址
*/
public static void unZip(String fromFile){
File file = new File(fromFile);
doUnZip(file, file.getParent());
} /**
* @createDate:2017-10-14 下午4:50:55
* @author: learcher
* @Description:
* <p>加压ZIP文件</p>
* @param fromFile -> 需要加压的ZIP文件地址
* @param toPath -> 加压后的文件存放地址
*/
public static void unZip(String fromFile, String toPath){
if (toPath == null || "".equals(toPath.trim())){
unZip(fromFile);
}else{
doUnZip(new File(fromFile), toPath);
}
} /**
* @createDate:2017-10-14 下午4:51:17
* @author: learcher
* @Description:
* <p>加压ZIP文件</p>
* @param fromFile -> 需要加压的ZIP文件地址
* @param toPath -> 加压后的文件存放地址
* @param Password -> 解压密码
*/
public static void unZip(String fromFile, String toPath, String Password) {
PASSWORD = Password;
unZip(fromFile, toPath);
} /**
* @createDate:2017-10-14 下午4:48:00
* @author: learcher
* @Description:
* <p>解压ZIP文件</p>
* @param fromFile -> 需要加压 的zip文件
* @param toPath -> 加压后存放的目录
*/
private static void doUnZip(File fromFile, String toPath){
try{
ZipFile zipFile = new ZipFile(fromFile);
zipFile.setFileNameCharset("GBK");
if (!zipFile.isValidZipFile()) {
throw new ZipException("文件不合法或不存在!");
}
checkEncrypted(zipFile);
List<FileHeader> fileHeaderList = zipFile.getFileHeaders();
for (int i = 0; i < fileHeaderList.size(); i++) {
FileHeader fileHeader = fileHeaderList.get(i);
zipFile.extractFile(fileHeader, toPath);
}
}catch (Exception e) {
e.printStackTrace();
}
} /**
* @createDate:2017-10-14 下午4:15:36
* @author: learcher
* @Description:
* <p>检查加压是否需要密码</p>
*/
private static void checkEncrypted(ZipFile zip) throws ZipException {
if (zip.isEncrypted()) {
zip.setPassword(PASSWORD);
}
} /**
* @createDate 2017-10-14 下午5:36:17
* @author learcher
* @Description
* <p>把文件fromFile压缩为toFile</p>
* @param fromFile -> 需要进行压缩的文件或文件夹地址(完整路径)
* @param toFile -> 压缩后的文件(完整路径)
*/
public static void zip(String fromFile, String toFile){
zip(fromFile, toFile, true);
} /**
* @createDate 2017-10-14 下午5:36:17
* @author learcher
* @Description
* <p>把文件fromFile压缩为toFile</p>
* @param fromFile -> 需要进行压缩的文件或文件夹地址(完整路径)
* @param toFile -> 压缩后的文件(完整路径)
* @param password -> 设置解密密码,注:该密码最对文件控制
*/
public static void zip(String fromFile, String toFile, String password){
PASSWORD = password;
zip(fromFile, toFile, true);
} /**
* @createDate 2017-10-14 下午5:36:17
* @author learcher
* @Description
* <p>把文件fromFile压缩为toFile</p>
* <p>注:如果不覆盖,则会继续将新文件写入原有的zip包中</p>
* @param fromFile -> 需要进行压缩的文件或文件夹地址(完整路径)
* @param toFile -> 压缩后的文件(完整路径)
* @param cover -> 是否覆盖原有文件,true=覆盖
*/
public static void zip(String fromFile, String toFile, boolean cover){
File zipFile = new File(toFile);
if (!zipFile.getParentFile().exists()) {
zipFile.getParentFile().mkdirs();
}
if (zipFile.exists() && cover) {
zipFile.delete(); // 覆盖原有 文件
}
doZip(new File(fromFile), toFile);
} /**
* @createDate 2017-10-14 下午5:33:44
* @author learcher
* @Description
* <p>把文件fromFile压缩为toFile</p>
* @param fromFile -> 需要进行压缩的文件或文件夹地址(完整路径)
* @param toFile -> 压缩后的文件(完整路径)
*/
private static void doZip(File fromFile, String toFile){
try {
ZipFile zip=new ZipFile(toFile);
zip.setFileNameCharset("GBK");
ZipParameters param = new ZipParameters();
// 设置压缩方式(默认方式)
param.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);
// 设置压缩级别
param.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);
setupPassword(param);
if (fromFile.isFile()){
zip.addFile(fromFile, param);
}else{
zip.addFolder(fromFile, param);
}
} catch (ZipException e) {
e.printStackTrace();
}
} /**
* @createDate:2017-10-14 下午5:13:41
* @author: learcher
* @Description:
* <p>设置解压密码</p>
* @param param -> ZipParameters 参数对象
*/
private static void setupPassword(ZipParameters param) {
if (PASSWORD != null && !"".equals(PASSWORD.trim())){
// 设置加密文件
param.setEncryptFiles(true);
// 设置加密方式(必须要有加密算法)
param.setEncryptionMethod(Zip4jConstants.ENC_METHOD_STANDARD);
// 设置秘钥长度
param.setAesKeyStrength(Zip4jConstants.AES_STRENGTH_256);
param.setPassword(PASSWORD);
}
}
}
更多信息可以去查看:http://blog.csdn.net/u011165335/article/details/50496930
zip4j之加压解压的更多相关文章
- .NET使用ICSharpCode.SharpZipLib压缩/解压文件
SharpZipLib是国外开源加压解压库,可以方便的对文件进行加压/解压 1.下载ICSharpCode.SharpZipLib.dll,并复制到bin目录下 http://www.icsharpc ...
- C#第三方zip解压压缩工具,带事例源码
using System;using System.Collections.Generic;using System.Linq;using System.Text;using ICSharpCode. ...
- C#使用SharpZipLib压缩解压文件
#region 加压解压方法 /// <summary> /// 功能:压缩文件(暂时只压缩文件夹下一级目录中的文件,文件夹及其子级被忽略) /// </summary> // ...
- Java_压缩与解压工具类
转载请注明出处:http://blog.csdn.net/y22222ly/article/details/52201675 zip压缩,解压 zip压缩与解压主要依靠java api的两个类: Zi ...
- C# .NET 使用第三方类库DotNetZip解压/压缩Zip文件
dotNetZip on CodePlex: http://dotnetzip.codeplex.com/ 详细的可以看源代码……总之感觉比SharpZipLib好用.而且DotNetZip支持VB, ...
- CSharp tar类型文件压缩与解压
最近闲暇时间开始写点通用基础类在写到tar类型文件压缩与解压时遇到点问题 压缩用的类库我是下载的 SharpZipLib_0860版本 先上代码 加压核心 /// <summary> // ...
- MySQL5.7.25(解压版)Windows下详细的安装过程
大家好,我是浅墨竹染,以下是MySQL5.7.25(解压版)Windows下详细的安装过程 1.首先下载MySQL 推荐去官网上下载MySQL,如果不想找,那么下面就是: Windows32位地址:点 ...
- (转载)C#压缩解压zip 文件
转载之: C#压缩解压zip 文件 - 大气象 - 博客园http://www.cnblogs.com/greatverve/archive/2011/12/27/csharp-zip.html C# ...
- Android多种格式的异步解压/压缩解决方案
前言 最近由于项目需要,需要我谅解一下关于在移动平台的解压功能,在移动平台解压,我个人感觉是没有太大必要的,毕竟手机的性能有限.但是,不口否认,移动端的解压功能又是必备的,因为如果对于一些资源管理器类 ...
随机推荐
- [原创]Aop之使用Autofac+Castle 自动注入服务且动态代理服务实现拦截(非MVC控制器拦截)
public static class AutofacComponentManualRegister { /// <summary> /// 注册 /// </summary> ...
- Spring对外部属性文件指定的某个属性进行加密、解密
[From] http://blog.csdn.net/ethanq/article/details/7333897 在我们开发当中,经常会用到spring框架来读取属性文件的属性值,然后使用占位符引 ...
- vim(三)golang代码跳转配
在golang的代码里跳来跳去.... godef 安装 跳转是通过godef实现,godef的安装目录一般是$GOBIN,只要让godef命令在$PATH下即可 godef 命令安装: go get ...
- b站弹幕的爬取以及词云的简单使用
一.B站弹幕的爬取 1.分析发现,其弹幕都是通过list.so?=cid这个文件加载出来的,所以我们找到这个文件的请求头的请求url, 2. 打开url就能看到所有的评论 3. 上代码,解析 #!/u ...
- 2.rabbitmq 系列教程
rabbitmq系列教程-文章[转] 视频分享: 链接:https://pan.baidu.com/s/1s_Qr2A1o0s8Ru0exK62jqg 提取码:eb68
- Yii1 的数据库操作整理
1.根据条件查询一个集合 $objectResult=Post::model()->findAll($condition,$params);$objectResult=Post::model() ...
- 文献综述四:基于 UML 技术的客户关系管理系统实现
一.基本信息 标题:基于 UML 技术的客户关系管理系统实现 时间:2015 出版源:电子设计工程 文件分类:uml技术的研究 二.研究背景 使用UML 建模技术和 B/S 架构访问模式,设计出可应用 ...
- python发送信息到邮箱
import smtplib from email.mime.text import MIMEText 设置服务器所需信息 163邮箱服务器地址 mail_host = 'smtp.163.com' ...
- 解决eclipse中org.w3c.dom.Node类老报The method getTextContent() is undefined 问题
http://www.cnblogs.com/itspy007/articles/4431581.html
- 前端测试框架 puppeteer 文档翻译
puppeteer puppeteer 是一个通过DevTools 协议提供高级API 来控制 chrome,chromium 的 NODE库; puppeteer默认运行在 headless 模式, ...