資源簡介
winzipaes是Java操作ZIP文件的開源項目,支持密碼,但不支持中文文件名。此文件中包含修改后的源碼、文檔、jar包、依賴包及示例程序等文件。可以壓縮文件名含有中文的文件,修改之處可以參看博客http://xjlsgcjdtc.iteye.com/blog/1439514或者http://blog.csdn.net/zhangyihui1986/article/detai

代碼片段和文件信息
package?com.ninemax.demo.zip.decrypt.zh_cn;
import?java.io.File;
import?java.io.IOException;
import?java.util.List;
import?java.util.zip.DataFormatException;
import?org.apache.commons.io.FileUtils;
import?de.idyl.winzipaes.AesZipFileDecrypter;
import?de.idyl.winzipaes.AesZipFileEncrypter;
import?de.idyl.winzipaes.impl.AESDecrypter;
import?de.idyl.winzipaes.impl.AESDecrypterBC;
import?de.idyl.winzipaes.impl.AESEncrypter;
import?de.idyl.winzipaes.impl.AESEncrypterBC;
import?de.idyl.winzipaes.impl.ExtZipEntry;
/**
?*?壓縮指定文件或目錄為ZIP格式壓縮文件
?*?支持中文(修改源碼后)
?*?支持密碼(僅支持256bit的AES加密解密)
?*?依賴bcprov項目(bcprov-jdk16-140.jar)
?*?
?*?@author?zyh
?*/
public?class?DecryptionZipUtil?{
/**
?*?使用指定密碼將給定文件或文件夾壓縮成指定的輸出ZIP文件
?*?@param?srcFile?需要壓縮的文件或文件夾
?*?@param?destPath?輸出路徑
?*?@param?passwd?壓縮文件使用的密碼
?*/
public?static?void?zip(String?srcFileString?destPathString?passwd)?{
AESEncrypter?encrypter?=?new?AESEncrypterBC();
AesZipFileEncrypter?zipFileEncrypter?=?null;
try?{
zipFileEncrypter?=?new?AesZipFileEncrypter(destPath?encrypter);
/**
?*?此方法是修改源碼后添加用以支持中文文件名
?*/
zipFileEncrypter.setEncoding(“utf8“);
File?sFile?=?new?File(srcFile);
/**
?*?AesZipFileEncrypter提供了重載的添加Entry的方法其中:
?*?add(File?f?String?passwd)?
?*? 方法是將文件直接添加進壓縮文件
?*?
?*?add(File?f??String?pathForEntry?String?passwd)
?*? 方法是按指定路徑將文件添加進壓縮文件
?*?pathForEntry?-?to?be?used?for?addition?of?the?file?(path?within?zip?file)
?*/
doZip(sFile?zipFileEncrypter?““?passwd);
}?catch?(IOException?e)?{
e.printStackTrace();
}?finally?{
try?{
zipFileEncrypter.close();
}?catch?(IOException?e)?{
e.printStackTrace();
}
}
}
/**
?*?具體壓縮方法將給定文件添加進壓縮文件中并處理壓縮文件中的路徑
?*?@param?file?給定磁盤文件(是文件直接添加是目錄遞歸調用添加)
?*?@param?encrypter?AesZipFileEncrypter實例用于輸出加密ZIP文件
?*?@param?pathForEntry?ZIP文件中的路徑
?*?@param?passwd?壓縮密碼
?*?@throws?IOException
?*/
private?static?void?doZip(File?file?AesZipFileEncrypter?encrypter
String?pathForEntry?String?passwd)?throws?IOException?{
if?(file.isFile())?{
pathForEntry?+=?file.getName();
encrypter.add(file?pathForEntry?passwd);
return;
}
pathForEntry?+=?file.getName()?+?File.separator;
for(File?subFile?:?file.listFiles())?{
doZip(subFile?encrypter?pathForEntry?passwd);
}
}
/**
?*?使用給定密碼解壓指定壓縮文件到指定目錄
?*?@param?inFile?指定Zip文件
?*?@param?outDir?解壓目錄
?*?@param?passwd?解壓密碼
?*/
public?static?void?unzip(String?inFile?String?outDir?String?passwd)?{
File?outDirectory?=?new?File(outDir);
if?(!outDirectory.exists())?{
outDirectory.mkdir();
}
AESDecrypter?decrypter?=?new?AESDecrypterBC();
AesZipFileDecrypter?zipDecrypter?=?null;
try?{
zipDecrypter?=?new?AesZipFileDecrypter(new?File(inFile)?decrypter);
AesZipFileDecrypter.charset?=?“utf-8“;
/**
?*?得到ZIP文件中所有Entry但此處好像與JDK里不同目錄不視為Entry
?*?需要創建文件夾entry.isDirectory()方法同樣不適用不知道是不
?屬性????????????大小?????日期????時間???名稱
-----------?---------??----------?-----??----
?????文件?????1652404??2012-07-06?11:12??bcprov-jdk16-140.jar
?????文件????????4808??2012-07-07?12:08??DecryptionZipUtil.java
?????文件???????33849??2012-07-07?13:51??winszipaes_zh_CN_supported_20120416.jar
?????文件???????26408??2012-07-07?13:52??winszipaes_zh_CN_supported_20120416_src.zip
?????目錄???????????0??2012-07-06?17:01??winzipaes-docs\
?????文件????????3004??2012-07-06?11:01??winzipaes-docs\allclasses-fr
?????文件????????2664??2012-07-06?11:01??winzipaes-docs\allclasses-nofr
?????文件???????22202??2012-07-06?11:01??winzipaes-docs\constant-values.html
?????目錄???????????0??2012-07-06?17:01??winzipaes-docs\de\
?????文件????????5164??2012-07-06?11:01??winzipaes-docs\deprecated-list.html
?????目錄???????????0??2012-07-06?17:01??winzipaes-docs\de\idyl\
?????目錄???????????0??2012-07-06?17:01??winzipaes-docs\de\idyl\winzipaes\
?????文件???????21739??2012-07-06?11:01??winzipaes-docs\de\idyl\winzipaes\AesZipFileDecrypter.html
?????文件???????23177??2012-07-06?11:01??winzipaes-docs\de\idyl\winzipaes\AesZipFileEncrypter.html
?????目錄???????????0??2012-07-06?17:01??winzipaes-docs\de\idyl\winzipaes\class-use\
?????文件????????5923??2012-07-06?11:01??winzipaes-docs\de\idyl\winzipaes\class-use\AesZipFileDecrypter.html
?????文件????????5923??2012-07-06?11:01??winzipaes-docs\de\idyl\winzipaes\class-use\AesZipFileEncrypter.html
?????目錄???????????0??2012-07-06?17:01??winzipaes-docs\de\idyl\winzipaes\impl\
?????文件???????11946??2012-07-06?11:01??winzipaes-docs\de\idyl\winzipaes\impl\AESCryptoba
?????文件????????9977??2012-07-06?11:01??winzipaes-docs\de\idyl\winzipaes\impl\AESDecrypter.html
?????文件???????14475??2012-07-06?11:01??winzipaes-docs\de\idyl\winzipaes\impl\AESDecrypterBC.html
?????文件???????12863??2012-07-06?11:01??winzipaes-docs\de\idyl\winzipaes\impl\AESDecrypterJCA.html
?????文件???????10829??2012-07-06?11:01??winzipaes-docs\de\idyl\winzipaes\impl\AESEncrypter.html
?????文件???????16483??2012-07-06?11:01??winzipaes-docs\de\idyl\winzipaes\impl\AESEncrypterBC.html
?????文件???????14176??2012-07-06?11:01??winzipaes-docs\de\idyl\winzipaes\impl\AESEncrypterJCA.html
?????文件???????14110??2012-07-06?11:01??winzipaes-docs\de\idyl\winzipaes\impl\AESUtilsJCA.html
?????文件???????13513??2012-07-06?11:01??winzipaes-docs\de\idyl\winzipaes\impl\ByteArrayHelper.html
?????文件???????21681??2012-07-06?11:01??winzipaes-docs\de\idyl\winzipaes\impl\CentralDirectoryEntry.html
?????目錄???????????0??2012-07-06?17:01??winzipaes-docs\de\idyl\winzipaes\impl\class-use\
?????文件????????8210??2012-07-06?11:01??winzipaes-docs\de\idyl\winzipaes\impl\class-use\AESCryptoba
?????文件????????9779??2012-07-06?11:01??winzipaes-docs\de\idyl\winzipaes\impl\class-use\AESDecrypter.html
............此處省略54個文件信息
- 上一篇:開發計劃管理系統
- 下一篇:jsp java游泳館管理系統畢業設計程序論文
評論
共有 條評論