¶Ô±ÈÐÂÎļþ |
| | |
| | | package com.lf.server.helper; |
| | | |
| | | import com.google.common.base.Strings; |
| | | import net.lingala.zip4j.ZipFile; |
| | | import net.lingala.zip4j.exception.ZipException; |
| | | import net.lingala.zip4j.model.ZipParameters; |
| | | import net.lingala.zip4j.model.enums.AesKeyStrength; |
| | | import net.lingala.zip4j.model.enums.CompressionLevel; |
| | | import net.lingala.zip4j.model.enums.CompressionMethod; |
| | | import net.lingala.zip4j.model.enums.EncryptionMethod; |
| | | import org.apache.commons.logging.Log; |
| | | import org.apache.commons.logging.LogFactory; |
| | | |
| | | import java.io.File; |
| | | import java.nio.charset.Charset; |
| | | |
| | | /** |
| | | * Zip4j帮å©ç±» |
| | | * @author WWW |
| | | */ |
| | | public class Zip4jHelper { |
| | | private final static Log log = LogFactory.getLog(Zip4jHelper.class); |
| | | |
| | | /** |
| | | * Zipå缩 |
| | | * |
| | | * @param zipFilePath zipæä»¶ |
| | | * @param sourcePath æºè·¯å¾ |
| | | * @param password å¯ç |
| | | * @return æåæ¯å¦ |
| | | */ |
| | | public static boolean zip(String zipFilePath, String sourcePath, String password) { |
| | | try { |
| | | ZipFile zip = new ZipFile(zipFilePath); |
| | | zip.setCharset(Charset.forName("UTF-8")); |
| | | |
| | | File f = zip.getFile(); |
| | | if (!f.getParentFile().exists()) { |
| | | f.getParentFile().mkdirs(); |
| | | } |
| | | if (f.exists()) { |
| | | f.delete(); |
| | | } |
| | | |
| | | // 设置å缩æä»¶åæ° |
| | | ZipParameters params = new ZipParameters(); |
| | | // å缩æ¹å¼ |
| | | params.setCompressionMethod(CompressionMethod.DEFLATE); |
| | | // åç¼©çº§å« |
| | | params.setCompressionLevel(CompressionLevel.NORMAL); |
| | | // æ¯å¦è®¾ç½®å 坿件 |
| | | params.setEncryptFiles(true); |
| | | // 设置AESå å¯å¼ºåº¦ï¼KEY_STRENGTH_256 |
| | | params.setAesKeyStrength(AesKeyStrength.KEY_STRENGTH_128); |
| | | // 设置å å¯ç®æ³ |
| | | params.setEncryptionMethod(EncryptionMethod.AES); |
| | | // 设置å¯ç |
| | | if (!Strings.isNullOrEmpty(password)) { |
| | | zip.setPassword(password.toCharArray()); |
| | | } |
| | | |
| | | // è¦æå
çæä»¶ææä»¶å¤¹ |
| | | File currentFile = new File(sourcePath); |
| | | if (currentFile.isDirectory()) { |
| | | zip.addFolder(currentFile, params); |
| | | } else { |
| | | zip.addFile(currentFile, params); |
| | | } |
| | | |
| | | return true; |
| | | } catch (Exception ex) { |
| | | log.error(ex.getMessage() + ex.getStackTrace() + "\n"); |
| | | return false; |
| | | } |
| | | } |
| | | |
| | | private static void addZipFile(ZipFile zip, ZipParameters params, File file) throws ZipException { |
| | | if (file.isDirectory()) { |
| | | File[] files = file.listFiles(); |
| | | for (File f : files) { |
| | | addZipFile(zip, params, f); |
| | | } |
| | | } else { |
| | | zip.addFile(file, params); |
| | | } |
| | | } |
| | | |
| | | /** |
| | | * Zipè§£å |
| | | * |
| | | * @param zipFile zipæä»¶ |
| | | * @param toPath è§£åè·¯å¾ |
| | | * @param password å¯ç |
| | | * @return æåæ¯/å¦ |
| | | */ |
| | | public static boolean unzip(String zipFile, String toPath, String password) { |
| | | try { |
| | | // çæçå缩æä»¶ |
| | | ZipFile zip = new ZipFile(zipFile); |
| | | |
| | | // 设置å¯ç |
| | | if (!Strings.isNullOrEmpty(password)) { |
| | | zip.setPassword(password.toCharArray()); |
| | | } |
| | | |
| | | // è§£åç¼©æææä»¶ä»¥åæä»¶å¤¹ |
| | | zip.extractAll(toPath); |
| | | |
| | | return true; |
| | | } catch (Exception ex) { |
| | | log.error(ex.getMessage() + ex.getStackTrace() + "\n"); |
| | | return false; |
| | | } |
| | | } |
| | | } |