Android zip4j压缩、解压、加解密的示例代码

Android zip4j压缩、解压、加解密的示例代码,第1张

概述jdk有原生的zip包,因为用起来没有达到想要的效果,所以此次用的是第三方zip4j开源

jdk有原生的zip包,因为用起来没有达到想要的效果,所以此次用的是第三方zip4j开源

zip4j.jar官网下载链接

直接代码

package com.dfxh.wang.compress_operate;import androID.util.Log;import net.lingala.zip4j.core.Zipfile;import net.lingala.zip4j.exception.ZipException;import net.lingala.zip4j.model.ZipParameters;import net.lingala.zip4j.util.Zip4jConstants;import java.io.file;/** * Created by WangChaowei on 2017/12/27. * * 此类是用第三方开源的zip4j *** 作文件(目录)的压缩、解压、加解密 */public class CompressOperate_zip4j {  private Zipfile zipfile;  private ZipParameters zipParameters;  private int result = 0; //状态返回值  private static final String TAG = "CompressOperate_zip4j";  /**   * zip4j压缩   * @param filePath 要压缩的文件路径(可文件,可目录)   * @param zipfilePath zip生成的文件路径   * @param password 密码   * @return 状态返回值   */  public int compressZip4j(String filePath,String zipfilePath,String password) {    file sourcefile = new file(filePath);    file zipfile_ = new file(zipfilePath);    try {      zipfile = new Zipfile(zipfile_);      zipfile.setfilenameCharset("GBK"); //设置编码格式(支持中文)      zipParameters = new ZipParameters();      zipParameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE); //压缩方式      zipParameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_norMAL); // 压缩级别      if (password != null && password != "") {  //是否要加密(加密会影响压缩速度)        zipParameters.setEncryptfiles(true);        zipParameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_STANDARD); // 加密方式        zipParameters.setPassword(password.tochararray());      }      if (zipfile_.isDirectory()) {        String sourcefilename = checkString(sourcefile.getname()); //文件校验        zipfilePath = zipfilePath + "/" + sourcefilename + ".zip";        Log.i(TAG,"保存压缩文件的路径(zipfilePath):" + zipfilePath);        compressZip4j(filePath,zipfilePath,password);      }      if (sourcefile.isDirectory()) {        // file[] files = sourcefile.Listfiles();        // ArrayList<file> arrayList = new ArrayList<file>();        // Collections.addAll(arrayList,files);        zipfile.addFolder(sourcefile,zipParameters);      } else {        zipfile.addfile(sourcefile,zipParameters);      }      Log.i(TAG,"compressZip4j: 压缩成功");    } catch (ZipException e) {      Log.e(TAG,"compressZip4j: 异常:" + e);      result = -1;      return result;    }    return result;  }  /**   * 校验提取出的原文件名字是否带格式   * @param sourcefilename 要压缩的文件名   * @return   */  private String checkString(String sourcefilename){    if (sourcefilename.indexOf(".") > 0){      sourcefilename = sourcefilename.substring(0,sourcefilename.length() - 4);      Log.i(TAG,"checkString: 校验过的sourcefilename是:" + sourcefilename);    }    return sourcefilename;  }  /**   * zip4j解压   * @param zipfilePath 待解压的zip文件(目录)路径   * @param filePath 解压到的保存路径   * @param password 密码   * @return 状态返回值   */  public int uncompressZip4j(String zipfilePath,String filePath,String password) {    file zipfile_ = new file(zipfilePath);    file sourcefile = new file(filePath);    try {      zipfile = new Zipfile(zipfile_);      zipfile.setfilenameCharset("GBK"); //设置编码格式(支持中文)      if (!zipfile.isValIDZipfile()){   //检查输入的zip文件是否是有效的zip文件        throw new ZipException("压缩文件不合法,可能被损坏.");      }      if (sourcefile.isDirectory() && !sourcefile.exists()) {        sourcefile.mkdir();      }      if (zipfile.isEncrypted()) {        zipfile.setPassword(password.tochararray());      }      zipfile.extractAll(filePath); //解压      Log.i(TAG,"uncompressZip4j: 解压成功");    } catch (ZipException e) {      Log.e(TAG,"uncompressZip4j: 异常:"+ e);      result = -1;      return result;    }    return result;  }}

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持编程小技巧。

总结

以上是内存溢出为你收集整理的Android zip4j压缩、解压、加解密的示例代码全部内容,希望文章能够帮你解决Android zip4j压缩、解压、加解密的示例代码所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1143202.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-31
下一篇 2022-05-31

发表评论

登录后才能评论

评论列表(0条)

保存