首页 > 编程知识 正文

手机解压加密文件(安卓手机文件加密软件)

时间:2023-05-06 18:34:21 阅读:75027 作者:398

一、背景

常我们再开发过程中,无论是Android 客户端程序还是桌面程序,有可能涉及到文件的上传和下载,多文件时通常做zip压缩处理,将多个文件压缩为一个zip包,方便传输,另外,客户端内也可能会涉及到一些资源的下载,这些资源通常都以zip的方式存放在服务器上,客户端可以在合适的时候将zip文件下载,然后解压资源。下面了解一下使用Zip4j框架来压缩和解压处理文件。

二、Zip4j框架

官网:http://www.lingala.net/zip4j/index.php

三、使用方式 public class ZipUtil { /** * 对文件列表压缩加密 * @param srcfile * @param destZipFile * @param password * @return */ public static File doZipFilesWithPassword(File[] srcfile, String destZipFile, String password) { if (srcfile == null || srcfile.length == 0) { return null; } ZipParameters parameters = new ZipParameters(); // 压缩方式 parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE); // 压缩级别 parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL); // 加密方式 if (!TextUtils.isEmpty(password)) { parameters.setEncryptFiles(true); parameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_STANDARD); parameters.setPassword(password); } ArrayList<File> existFileList = new ArrayList<File>(); for (int i = 0; i < srcfile.length; i++) { if (srcfile[i] != null) { existFileList.add(srcfile[i]); } } try { ZipFile zipFile = new ZipFile(destZipFile); zipFile.addFiles(existFileList, parameters); return zipFile.getFile(); } catch (ZipException e) { e.printStackTrace(); return null; } } /** * 对文件夹加密 * @param folder * @param destZipFile * @param password * @return */ public static File doZipFilesWithPassword(File folder, String destZipFile, String password) { if (!folder.exists()) { return null; } ZipParameters parameters = new ZipParameters(); // 压缩方式 parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE); // 压缩级别 parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL); // 加密方式 if (!TextUtils.isEmpty(password)) { parameters.setEncryptFiles(true);// parameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_STANDARD); parameters.setPassword(password); } try { ZipFile zipFile = new ZipFile(destZipFile); zipFile.addFolder(folder, parameters); return zipFile.getFile(); } catch (ZipException e) { e.printStackTrace(); return null; } } /** * 单文件压缩并加密 * @param file 要压缩的zip文件 * @param destZipFile zip保存路径 * @param password 密码 可以为null * @return */ public static File doZipSingleFileWithPassword(File file, String destZipFile, String password) { if (!file.exists()) { return null; } ZipParameters parameters = new ZipParameters(); // 压缩方式 parameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE); // 压缩级别 parameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL); // 加密方式 if (!TextUtils.isEmpty(password)) { parameters.setEncryptFiles(true);// parameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_STANDARD); parameters.setPassword(password); } try { ZipFile zipFile = new ZipFile(destZipFile); zipFile.addFile(file,parameters); return zipFile.getFile(); } catch (ZipException e) { e.printStackTrace(); return null; } } /** * 解压文件 * File:目标zip文件 * password:密码,如果没有可以传null * path:解压到的目录路径 */ public static boolean unZip(File file,String password,String path) { boolean res = false;try {ZipFile zipFile = new ZipFile(file);if (zipFile.isEncrypted()) { if(password != null && !password.isEmpty()) { zipFile.setPassword(password); } } zipFile.extractAll(path); res = true;} catch (ZipException e) {// TODO Auto-generated catch blocke.printStackTrace();} return res; } }

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。