1000字范文,内容丰富有趣,学习的好帮手!
1000字范文 > 安卓客户端带密码压缩或者解压zip文件

安卓客户端带密码压缩或者解压zip文件

时间:2019-05-28 20:59:00

相关推荐

安卓客户端带密码压缩或者解压zip文件

这个是看的别人的文章,然后改过两行,拿到安卓上来用的

jar下载地址:/detail/qq_24179679/9766252

操作类如下

import java.io.File;import java.util.ArrayList;import java.util.List;import android.text.TextUtils;import net.lingala.zip4j.core.ZipFile;import net.lingala.zip4j.exception.ZipException;import net.lingala.zip4j.model.FileHeader;import net.lingala.zip4j.model.ZipParameters;import net.lingala.zip4j.util.Zip4jConstants;public class ZipUtil {/*** 解压指定zip文件到指定目录* @param zip zip文件地址* @param dest 解压目录* @param pass 密码* @return* @throws ZipException*/public File[] unzip(String zip, String dest, String pass) throws ZipException {File zipFile = new File(zip);return unZip(zipFile, dest, pass);}/*** 解压指定zip文件到指定目录* @param zipFile zip文件* @param dest解压目录* @param pass 密码* @return* @throws ZipException*/@SuppressWarnings("unchecked")public File[] unZip(File zipFile, String dest, String pass) throws ZipException {ZipFile zFile = new ZipFile(zipFile);zFile.setFileNameCharset("UTF-8");if (!zFile.isValidZipFile()) {throw new ZipException("文件损坏或者非ZIP文件");}File destDir = new File(dest);if (destDir.isDirectory() && !destDir.exists()) {destDir.mkdir();}if (zFile.isEncrypted()) {// 设置密码zFile.setPassword(pass.toCharArray());}zFile.extractAll(dest);// 解压ListheaderList = zFile.getFileHeaders();ListextractedFileList = new ArrayList();for (FileHeader fileHeader : headerList) {if (!fileHeader.isDirectory()) {extractedFileList.add(new File(destDir, fileHeader.getFileName()));}}File[] extractedFiles = new File[extractedFileList.size()];extractedFileList.toArray(extractedFiles);try {zipFile.delete();} catch (Exception e) {// TODO: handle exceptione.printStackTrace();}return extractedFiles;}/*** 压缩指定文件到指定目录下* @param src 被压缩的源文件或者文件夹* @param dest 存放位置,需要具体到压缩后保存的名字,如 ------/xxx.zip* @param pass 解压密码*/public void ZipAddPass(String src, String dest, String pass){File srcFile = new File(src);dest = buildDestinationZipFilePath(srcFile, dest);ZipParameters zipp = new ZipParameters();zipp.setCompressionMethod(P_DEFLATE);//压缩方式zipp.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);//压缩级别if (!TextUtils.isEmpty(pass)) {//设置解压密码zipp.setEncryptFiles(true);zipp.setEncryptionMethod(Zip4jConstants.ENC_METHOD_STANDARD);zipp.setPassword(pass);}try {ZipFile zipFile = new ZipFile(dest);zipFile.setFileNameCharset("UTF-8");if (srcFile.isDirectory()) {zipFile.addFolder(src, zipp);}else {zipFile.addFile(srcFile, zipp);}} catch (Exception e) {// TODO: handle exceptione.printStackTrace();}}/*** 创建压缩文件存放路径* @param sourceFile 被压缩的文件* @param dest 目标路径* @return 压缩文件存放路径*/private String buildDestinationZipFilePath(File sourceFile, String dest){String result = "";if (TextUtils.isEmpty(dest)) {if (sourceFile.isDirectory()) {result = sourceFile.getParent() + File.separator + sourceFile.getName() + ".zip";}else {String fileName = sourceFile.getName().substring(0, sourceFile.getName().lastIndexOf(".")); result = sourceFile.getParent() + File.separator + fileName + ".zip";}}else {createifnoexit(dest);File destFile = new File(dest);if (destFile.isDirectory()) {if (sourceFile.isDirectory()) {if (dest.endsWith(File.separator)) {result = dest + sourceFile.getName() + ".zip";}else {result = dest + File.separator + sourceFile.getName() + ".zip";}}else {if (dest.endsWith(File.separator)) {result = dest + sourceFile.getName().substring(0, sourceFile.getName().lastIndexOf(".")) + ".zip";}else {result = dest + File.separator + sourceFile.getName().substring(0, sourceFile.getName().lastIndexOf(".")) + ".zip";}}}else {result = dest;}}return result;}private void createifnoexit(String dest){File destFile = null;if (dest.endsWith(File.separator)) {destFile = new File(dest);}else {destFile = new File(dest.substring(0, dest.lastIndexOf(File.separator)));}if (!destFile.exists()) {destFile.mkdirs();}}}

具体调用

压缩:

ZipUtil zipUtil = new ZipUtil();

String src = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "DCIM" + File.separator + "aaa";

String dest = Environment.getExternalStorageDirectory().getAbsolutePath() + File.separator + "DCIM" + File.separator + "c.zip";

zipUtil.ZipAddPass(src, dest, "jieyamima");

解压

ZipUtil zipUtil = new ZipUtil();

String dest = Environment.getExternalStorageDirectory().getAbsolutePath() + "/DCIM";

File mir = new File(dest);

if (mir.exists()) {

try {

File[] files = zipUtil.unzip(dest + "/c.zip", dest, "jieyamima");

if (files != null) {

Log.e("-----------", files.length + "/");

}

for (int i = 0; i < files.length; i++) {

Log.e("-----------", files[i].getAbsolutePath() + "/" + files[i].getName());

}

} catch (ZipException e) {

// TODO Auto-generated catch block

e.printStackTrace();

Log.e("-------", "解压失败" + e.getMessage());

}

}else {

Log.e("-------", "解压失败,DCIM文件夹不存在");

}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。