真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

Android中如何實(shí)現(xiàn)zip4j壓縮、解壓、加解密功能

這篇文章主要介紹了Android中如何實(shí)現(xiàn)zip4j壓縮、解壓、加解密功能,具有一定借鑒價(jià)值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

站在用戶(hù)的角度思考問(wèn)題,與客戶(hù)深入溝通,找到彌勒網(wǎng)站設(shè)計(jì)與彌勒網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個(gè)性化、用戶(hù)體驗(yàn)好的作品,建站類(lèi)型包括:網(wǎng)站設(shè)計(jì)、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊(cè)、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋彌勒地區(qū)。

jdk有原生的zip包,因?yàn)橛闷饋?lái)沒(méi)有達(dá)到想要的效果,所以此次用的是第三方zip4j開(kāi)源

直接代碼:

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.
 *
 * 此類(lèi)是用第三方開(kāi)源的zip4j操作文件(目錄)的壓縮、解壓、加解密
 */

public class CompressOperate_zip4j {
  private ZipFile zipFile;
  private ZipParameters zipParameters;
  private int result = 0; //狀態(tài)返回值

  private static final String TAG = "CompressOperate_zip4j";

  /**
   * zip4j壓縮
   * @param filePath 要壓縮的文件路徑(可文件,可目錄)
   * @param zipFilePath zip生成的文件路徑
   * @param password 密碼
   * @return 狀態(tài)返回值
   */
  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"); //設(shè)置編碼格式(支持中文)

      zipParameters = new ZipParameters();
      zipParameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE); //壓縮方式
      zipParameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL); // 壓縮級(jí)別
      if (password != null && password != "") {  //是否要加密(加密會(huì)影響壓縮速度)
        zipParameters.setEncryptFiles(true);
        zipParameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_STANDARD); // 加密方式
        zipParameters.setPassword(password.toCharArray());
      }

      if (zipFile_.isDirectory()) {
        String sourceFileName = checkString(sourceFile.getName()); //文件校驗(yàn)
        zipFilePath = zipFilePath + "/" + sourceFileName + ".zip";
        Log.i(TAG, "保存壓縮文件的路徑(zipFilePath):" + zipFilePath);
        compressZip4j(filePath,zipFilePath,password);
      }
      if (sourceFile.isDirectory()) {
        // File[] files = sourceFile.listFiles();
        // ArrayList arrayList = new ArrayList();
        // 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;
  }

  /**
   * 校驗(yàn)提取出的原文件名字是否帶格式
   * @param sourceFileName 要壓縮的文件名
   * @return
   */
  private String checkString(String sourceFileName){
    if (sourceFileName.indexOf(".") > 0){
      sourceFileName = sourceFileName.substring(0,sourceFileName.length() - 4);
      Log.i(TAG, "checkString: 校驗(yàn)過(guò)的sourceFileName是:" + sourceFileName);
    }
    return sourceFileName;
  }

  /**
   * zip4j解壓
   * @param zipFilePath 待解壓的zip文件(目錄)路徑
   * @param filePath 解壓到的保存路徑
   * @param password 密碼
   * @return 狀態(tài)返回值
   */
  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"); //設(shè)置編碼格式(支持中文)
      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;
  }

}

感謝你能夠認(rèn)真閱讀完這篇文章,希望小編分享的“Android中如何實(shí)現(xiàn)zip4j壓縮、解壓、加解密功能”這篇文章對(duì)大家有幫助,同時(shí)也希望大家多多支持創(chuàng)新互聯(lián),關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道,更多相關(guān)知識(shí)等著你來(lái)學(xué)習(xí)!


分享題目:Android中如何實(shí)現(xiàn)zip4j壓縮、解壓、加解密功能
當(dāng)前路徑:http://weahome.cn/article/pcssdh.html

其他資訊

在線咨詢(xún)

微信咨詢(xún)

電話咨詢(xún)

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部