Android端zip压缩与解压,目前暂时只做zip格式支持,基于Zip4j (http://www.lingala.net/zip4j/)进行扩展成工具类,支持对单个文件,多个文件以及文件夹进行压缩,对压缩文件解压到到指定目录,支持压缩解压使用密码。 详见使用案例:MainActivity.java
-
依赖
compile 'com.leo618:zip:0.0.1'
-
选择开启或者关闭日志打印
ZipManager.debug(BuildConfig.DEBUG);
-
压缩
/** * 压缩文件或者文件夹 * * @param targetPath 被压缩的文件路径 * @param destinationFilePath 压缩后生成的文件路径 * @param callback 压缩进度回调 */ public static void zip(String targetPath, String destinationFilePath, IZipCallback callback) /** * 压缩文件或者文件夹 * * @param targetPath 被压缩的文件路径 * @param destinationFilePath 压缩后生成的文件路径 * @param password 压缩加密 密码 * @param callback 压缩进度回调 */ public static void zip(String targetPath, String destinationFilePath, String password, IZipCallback callback) /** * 压缩多个文件 * * @param list 被压缩的文件集合 * @param destinationFilePath 压缩后生成的文件路径 * @param callback 压缩进度回调 */ public static void zip(ArrayList<File> list, String destinationFilePath, IZipCallback callback) /** * 压缩多个文件 * * @param list 被压缩的文件集合 * @param destinationFilePath 压缩后生成的文件路径 * @param password 压缩 密码 * @param callback 回调 */ public static void zip(ArrayList<File> list, String destinationFilePath, String password, final IZipCallback callback)
-
解压
/** * 解压 * * @param targetZipFilePath 待解压目标文件地址 * @param destinationFolderPath 解压后文件夹地址 * @param callback 回调 */ public static void unzip(String targetZipFilePath, String destinationFolderPath, IZipCallback callback) /** * 解压 * * @param targetZipFilePath 待解压目标文件地址 * @param destinationFolderPath 解压后文件夹地址 * @param password 解压密码 * @param callback 回调 */ public static void unzip(String targetZipFilePath, String destinationFolderPath, String password, final IZipCallback callback)
-
回调接口
public interface IZipCallback { /** * 开始 */ void onStart(); /** * 进度回调 * * @param percentDone 完成百分比 */ void onProgress(int percentDone); /** * 完成 * * @param success 是否成功 */ void onFinish(boolean success); }
-
混淆
-dontwarn com.leo618.zip.** -dontwarn net.lingala.zip4j.** -keep class com.leo618.zip.** { *; } -keep class net.lingala.zip4j.** { *; }