安卓客户端带密码压缩或者解压zip文件
2017-02-28 15:39
281 查看
这个是看的别人的文章,然后改过两行,拿到安卓上来用的
jar下载地址:http://download.csdn.net/detail/qq_24179679/9766252
操作类如下
具体调用
压缩:
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文件夹不存在");
}
jar下载地址:http://download.csdn.net/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);// 解压 List headerList = zFile.getFileHeaders(); List extractedFileList = 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 exception e.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(Zip4jConstants.COMP_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 exception e.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 4000 + 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文件夹不存在");
}
相关文章推荐
- VC++压缩解压zip文件(支持密码)
- 压缩或者解压带密码的ZIp包
- iOS如何处理zip文件,解压或者压缩?
- Java 解压和压缩密码zip文件
- Java解压和压缩带密码的zip文件(转…
- Java解压和压缩带密码的zip文件
- 使用java解压或者压缩zip文件
- java解压缩zip文件,java创建zip文件,java压缩文件,java解压文件,用到ant.jar解决汉字乱码
- Java压缩、解压zip文件(依赖第三方类库zip4j_1.3.1.jar)
- 安卓解压zip文件,解压后多级目录显示
- python脚本编程:使用zip或者tar压缩和解压文件
- java解压缩zip文件,java创建zip文件,java压缩文件,java解压文件,用到ant.jar解决汉字乱码
- java 压缩解压zip文件--使用ant支持中文
- Python压缩解压缩zip文件及破解zip文件密码的方法
- Android 压缩解压zip文件
- Android 压缩解压zip文件
- java压缩解压zip文件,中文乱码还需要ant.jar包
- zip文件的压缩和解压(ant.jar)
- java-在Java中操作Zip文件,压缩/解压
- VC++ 解压有密码的.zip文件