添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接
精彩文章免费看

JAVA实现--解压ZIP格式的压缩包

一、Zip4j介绍

zip4j官网: http://www.lingala.net/zip4j/ 可以在"download"页面下载官方示例进行学习。

特征:

从Zip文件创建,添加,提取,更新,删除文件;

读/写受密码保护的Zip文件和流;

支持AES 128/256加密,支持标准邮编加密;

支持Zip64格式

支持存储(无压缩)和Deflate压缩方法

从Split Zip文件创建或提取文件(例如:z01,z02,... zip)

支持zip 中的Unicode文件名和注释* Progress Monitor- 集成到应用程序和面向用户的应用程序

进度监视器

二、需要的引入的jar包

<dependency>

<groupId>net.lingala.zip4j</groupId>

<artifactId>zip4j</artifactId>

<version>2.7.0</version>

</dependency>

三、压缩整个文件夹

import java.io.File;

import net.lingala.zip4j.ZipFile;

import net.lingala.zip4j.exception.ZipException;

import net.lingala.zip4j.model.ZipParameters;

import net.lingala.zip4j.model.enums.CompressionLevel;

import net.lingala.zip4j.model.enums.CompressionMethod;

public class ZipFiles {

private  void zipFile() throws ZipException {

// 生成的压缩文件

ZipFile zipFile = new ZipFile("D:\\test.zip");

ZipParameters parameters = new ZipParameters();

// 压缩方式

parameters.setCompressionMethod(CompressionMethod.STORE);

// 压缩级别

parameters.setCompressionLevel(CompressionLevel.FAST);

// 要打包的文件夹

File currentFile = new File("D:\\test");

File[] list = currentFile.listFiles();

// 遍历test文件夹下所有的文件、文件夹

for (File f : list) {

if (f.isDirectory()) {

zipFile.addFile(f.getPath(), parameters);


} else {

zipFile.addFile(f, parameters);

}

}

}

public static void main(String[] args) {

// TODO Auto-generated method stub

ZipFiles zf = new ZipFiles();

try {

zf.zipFile();

} catch (ZipException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

}

四、




解压ZIP格式的文件

public static void unzip(String srcFile,String  destDirPath) {

long startTime=System.nanoTime();   //获取开始时间

try {

/** 判断文件是否存在 */

File file = new File(srcFile);

if (file.exists()) {

/** 判断文件是否是zip格式的压缩文件  */

// 获取文件的后缀

String fileSuffix =  file.getName().substring(file.getName().lastIndexOf("."));

if (".zip".equals(fileSuffix)) {

net.lingala.zip4j.core.ZipFile zipFile = new  net.lingala.zip4j.core.ZipFile(srcFile);

// 设置编码格式中文设置为GBK格式

zipFile.setFileNameCharset("GBK");

// 解压压缩包

zipFile.extractAll(destDirPath);

}

}

} catch (Exception e) {

e.printStackTrace();

}

long endTime=System.nanoTime(); //获取结束时间

System.out.println("程序运行时间:  "+(endTime-startTime)+"ns");

System.out.println("程序运行时间:  "+(endTime-startTime)/1000000+"ms");

System.out.println("程序运行时间:  "+(endTime-startTime)/1000000000+"s");

}