• 大小: 1.56MB
    文件类型: .zip
    金币: 2
    下载: 2 次
    发布日期: 2023-08-31
  • 语言: Java
  • 标签: winzipaes  ZIP  密码  中文  

资源简介

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-frame.html
     文件        2664  2012-07-06 11:01  winzipaes-docs\allclasses-noframe.html
     文件       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\AESCryptobase.html
     文件        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\AESCryptobase.html
     文件        9779  2012-07-06 11:01  winzipaes-docs\de\idyl\winzipaes\impl\class-use\AESDecrypter.html
............此处省略54个文件信息

评论

共有 条评论