最近看同事搞个文件打包,搞了大半天,还是有问题!嗨~~

网上明明有现成的,偏偏要自己写!

下面是基于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之加压解压的更多相关文章

  1. .NET使用ICSharpCode.SharpZipLib压缩/解压文件

    SharpZipLib是国外开源加压解压库,可以方便的对文件进行加压/解压 1.下载ICSharpCode.SharpZipLib.dll,并复制到bin目录下 http://www.icsharpc ...

  2. C#第三方zip解压压缩工具,带事例源码

    using System;using System.Collections.Generic;using System.Linq;using System.Text;using ICSharpCode. ...

  3. C#使用SharpZipLib压缩解压文件

    #region 加压解压方法 /// <summary> /// 功能:压缩文件(暂时只压缩文件夹下一级目录中的文件,文件夹及其子级被忽略) /// </summary> // ...

  4. Java_压缩与解压工具类

    转载请注明出处:http://blog.csdn.net/y22222ly/article/details/52201675 zip压缩,解压 zip压缩与解压主要依靠java api的两个类: Zi ...

  5. C# .NET 使用第三方类库DotNetZip解压/压缩Zip文件

    dotNetZip on CodePlex: http://dotnetzip.codeplex.com/ 详细的可以看源代码……总之感觉比SharpZipLib好用.而且DotNetZip支持VB, ...

  6. CSharp tar类型文件压缩与解压

    最近闲暇时间开始写点通用基础类在写到tar类型文件压缩与解压时遇到点问题 压缩用的类库我是下载的 SharpZipLib_0860版本 先上代码 加压核心 /// <summary> // ...

  7. MySQL5.7.25(解压版)Windows下详细的安装过程

    大家好,我是浅墨竹染,以下是MySQL5.7.25(解压版)Windows下详细的安装过程 1.首先下载MySQL 推荐去官网上下载MySQL,如果不想找,那么下面就是: Windows32位地址:点 ...

  8. (转载)C#压缩解压zip 文件

    转载之: C#压缩解压zip 文件 - 大气象 - 博客园http://www.cnblogs.com/greatverve/archive/2011/12/27/csharp-zip.html C# ...

  9. Android多种格式的异步解压/压缩解决方案

    前言 最近由于项目需要,需要我谅解一下关于在移动平台的解压功能,在移动平台解压,我个人感觉是没有太大必要的,毕竟手机的性能有限.但是,不口否认,移动端的解压功能又是必备的,因为如果对于一些资源管理器类 ...

随机推荐

  1. 中间件使用之(UA,IP,selenium)的使用

    一.UA池:User-Agent池 - 作用:尽可能多的将scrapy工程中的请求伪装成不同类型的浏览器身份. - 操作流程: 1.在下载中间件中拦截请求 2.将拦截到的请求的请求头信息中的UA进行篡 ...

  2. VUE-CLI 设置页面title

    router > index.js { path: '/worklist', name: 'worklist', component: worklist, meta: {title:'维修工列表 ...

  3. oracle 基础知识(十一)----表空间结构

    一,逻辑结构图 二.tablespace 01,Oracle表空间 它是一个逻辑的概念,它在物理上是不存在的. 02,oracle 存储结构 03.表空间特性 一个数据库可以包含多个表空间,一个表空间 ...

  4. Git学习手记

    直接使用github的客户端即可 1.简介 集中化的版本控制系统( Centralized Version Control Systems,简称 CVCS )应运而生.这类系统,诸如 CVS,Subv ...

  5. TOJ 4393 Game

    描述 Bob always plays game with Alice.Today,they are playing a game on a tree.Alice has m1 stones,Bob ...

  6. Android中改变Activity的不同icon:activity-alias

    Android设置title中的Icon有几种方法,介绍如下: 一种是直接在AndroidManifest.xml文件中设置android:icon属性,这种方法简单有效,应该算是我们最常用的设置Ic ...

  7. 已知tomcat应用名称,如何查询该应用端口号

    假设应用名称叫pear,并假设路径为:/datong/tomcat-pear/ 方法一,根据PID查找应用端口号,前提是应用已经运行 1,找到改应用的PID:ps -ef | grep pear | ...

  8. Coursera 机器学习 第6章(上) Advice for Applying Machine Learning 学习笔记

    这章的内容对于设计分析假设性能有很大的帮助,如果运用的好,将会节省实验者大量时间. Machine Learning System Design6.1 Evaluating a Learning Al ...

  9. 【VMware&Vritualbox】虚拟机安装windows server2016

    一.下载镜像 参考链接:https://blog.csdn.net/yenange/article/details/52981769 http://blog.sina.com.cn/s/blog_10 ...

  10. React之特点及常见用法

    1.什么是React? React是一个用于构建用户界面的JavaScript库.主要用于构建UI,很多人认为Reatc是MVC中的V(视图). React起源于Facebook的内部项目,用来架构I ...