使用zip4j加密和解密文件和目录
闲话少说,直接看工具类:
package com.ilucky.zip4j.util; import java.io.File; import net.lingala.zip4j.core.ZipFile; import net.lingala.zip4j.exception.ZipException; import net.lingala.zip4j.model.ZipParameters; import net.lingala.zip4j.util.Zip4jConstants; /** * @author IluckySi * @since 20150723 */ public class Zip4jUtil { private String srcPath; private String dstPath; private String password = "123456"; public String getSrcPath() { return srcPath; } public void setSrcPath(String srcPath) { this.srcPath = srcPath; } public String getDstPath() { return dstPath; } public void setDstPath(String dstPath) { this.dstPath = dstPath; } public String getPassword() { return password; } public void setPassword(String password) { this.password = password; } /** * 加密 * 支持将某个文件或某个目录下所有的文件加密. * 1.某个文件:D:\\test\\src.zip. * 2某个目录:D:\\test\\src * @return boolean */ public boolean encrypt() { try { if(!new File(srcPath).exists()) { System.out.println("源路径不存在 "+srcPath); return false; } ZipParameters parameters = new ZipParameters(); parameters.setEncryptFiles(true); parameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_AES); parameters.setAesKeyStrength(Zip4jConstants.AES_STRENGTH_256); parameters.setPassword(password.toCharArray()); File srcFile = new File(srcPath); ZipFile destFile = new ZipFile(dstPath); if(srcFile.isDirectory()) { destFile.addFolder(srcFile, parameters); } else { destFile.addFile(srcFile, parameters); } System.out.println("成功加密文件"); return true; } catch (Exception e) { System.out.println("加密文件发生异常:"+e); return false; } } /** * 解密 * 支持将某个加密文件解压缩到某个指定目录下面. * @return boolean */ public boolean decrypt() { try { if(!new File(srcPath).exists()) { System.out.println("源路径不存在 "+srcPath); return false; } ZipFile srcFile = new ZipFile(srcPath); srcFile.setFileNameCharset("GBK"); srcFile.setPassword(password.toCharArray()); srcFile.extractAll(dstPath); System.out.println("成功解密文件"); return true; } catch (ZipException e) { System.out.println("解密文件发生异常:"+e); return false; } } }
然后看测试类:
package com.ilucky.zip4j.util; /** * @author IluckySi * @since 20150723 */ public class MainTest { public static void main(String[] args) { //加密. Zip4jUtil zip4jUtil = new Zip4jUtil(); zip4jUtil.setSrcPath("D:\\test\\src.zip"); zip4jUtil.setDstPath("D:\\test\\dst.zip"); zip4jUtil.setPassword("123"); zip4jUtil.encrypt(); //解密. zip4jUtil.setSrcPath("D:\\test\\dst.zip"); zip4jUtil.setDstPath("D:\\test\\"); zip4jUtil.setPassword("123"); //zip4jUtil.decrypt(); } }
最后看pom文件:
<dependency> <groupId>net.lingala.zip4j</groupId> <artifactId>zip4j</artifactId> <version>1.3.2</version> </dependency>
来自:http://blog.csdn.net/sidongxue2/article/details/47026909