Android开发之AIDE的Zip4j简单用法

前言

今天群里有一个小可爱问我Zip4j解压缩怎么写,请我出一个教程。我答应他在明天早上8.00出一个教程,于是就有了这篇教程,群里的那个小可爱你还在吗(^_^)

本篇教程给大家介绍一下Zip4j的基本用法,包括压缩、解压。

Zip4j介绍

Zip4j官网:http://www.lingala.net/zip4j/

主要特性:

1.从zip压缩文件创建,添加,提取,更新,删除文件
2.读/写密码保护的zip文件
3.支持AES 128/256算法加密
4.支持标准zip算法加密
5.支持zip64格式
6.支持store(无压缩)和Deflate压缩方法
7.从Split Zip文件创建或提取文件(例如:z01,z02,… zip)
8.支持Unicode编码文件名
9.进度监视器

Zip4j使用方法

1.引用Zip4j依赖库

implementation 'net.lingala.zip4j:zip4j:1.3.2'

2.压缩文件

import java.io.*;
import net.lingala.zip4j.core.*;
import net.lingala.zip4j.exception.*;
import net.lingala.zip4j.model.*;
import net.lingala.zip4j.util.*;

/**
 * Created by 梦雪 on 2019/10/04.
 */
public class Utils {
	/**
     * 压缩
     *
     * @param srcFile 要压缩的文件夹
     * @param dest    生成的压缩文件
     * @throws ZipException 异常
     */
    public static void zip(String srcFile, String dest) {
        // 生成的压缩文件
        try {
			ZipFile zipFile = new ZipFile(dest);
			ZipParameters parameters = new ZipParameters();
			// 压缩方式
			parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);
			// 压缩级别
			parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);
			// 要打包的文件夹
			File currentFile = new File(srcFile);
			File[] fs = currentFile.listFiles();
			// 遍历文件夹下所有的文件、文件夹
			for (File f : fs) {
				if (f.isDirectory()) {
					zipFile.addFolder(f.getPath(), parameters);
				} else {
					zipFile.addFile(f, parameters);
				}
			}
		} catch (ZipException e) {
			e.printStackTrace();
		}
    }
}

2.1.压缩方式
COMP_STORE = 0;(仅打包,不压缩)
COMP_DEFLATE = 8;(默认)
COMP_AES_ENC = 99; 加密压缩

2.2.压缩级别
DEFLATE_LEVEL_FASTEST = 1; (速度最快,压缩比最小)
DEFLATE_LEVEL_FAST = 3; (速度快,压缩比小)
DEFLATE_LEVEL_NORMAL = 5; (一般)
DEFLATE_LEVEL_MAXIMUM = 7;
DEFLATE_LEVEL_ULTRA = 9;

3.解压文件

import java.io.*;
import net.lingala.zip4j.core.*;
import net.lingala.zip4j.exception.*;
import net.lingala.zip4j.model.*;
import net.lingala.zip4j.util.*;

/**
 * Created by 梦雪 on 2019/10/04.
 */
public class Utils {
    /**
     * 解压
	 *
     * @param zipfile 压缩包文件
     * @param dest 目标文件
     * @throws ZipException 抛出异常
     */
	public static void upzip(String zipFile, String dest) {
		try {
			//指向压缩文件.zip
			ZipFile zFile = new ZipFile(zipFile);
			//设置文件名编码,在gbk系统中需要设置,文件名称是中文就不会乱码
			zFile.setFileNameCharset("gbk");
			//检查文件是否合法
			if (!zFile.isValidZipFile()) {
				throw new Exception("文件名不合法");
			}
			//解压目录
			File destFile = new File(dest);
			if (destFile.isDirectory() && !destFile.exists()) {
				destFile.mkdirs();
			}
			//将文件输出到目标目录
			zFile.extractAll(dest);
		} catch (Exception e) {
			e.printStackTrace();
		}
	}
}

4.调用方式

在需要解压或压缩的地方调用即可

//压缩文件
		//Utils.zip("/sdcard/test/","/sdcard/test.zip");
		//解压文件
		Utils.upzip("/sdcard/test.zip","/sdcard/test/");

版权声明:本文为AIDE教程网原创文章,转载请附上原文出处链接和本声明。
本文链接:https://www.aidemx.cn/610.html

 版权声明:本文为AIDE教程网原创文章,转载请附上原文出处链接和本声明
本文链接: https://www.aidemx.cn/610.html

梦雪

专注于AIDE教程分享

    留下你的评论

    *评论支持代码高亮<pre class="prettyprint linenums">代码</pre>

    相关推荐