Java中的半密码保护Zip文件

Java中的半密码保护Zip文件,java,zip,zip4j,Java,Zip,Zip4j,我需要使用Java创建一个zip文件。图书馆并不重要,但zip4j似乎是一个好的图书馆。在此zip文件中,只有部分文件或子目录受密码保护。例如,在以下zip文件中,只有以“*”开头的文件才受密码保护: foo.zip foo1.txt *secure *secure1.txt *secure2.txt ZipFile zipFile = new ZipFile(zipFileName); ZipParameters zipParameters =

我需要使用Java创建一个zip文件。图书馆并不重要,但zip4j似乎是一个好的图书馆。在此zip文件中,只有部分文件或子目录受密码保护。例如,在以下zip文件中,只有以“*”开头的文件才受密码保护:

foo.zip
 foo1.txt
 *secure
  *secure1.txt
  *secure2.txt
        ZipFile zipFile = new ZipFile(zipFileName);

        ZipParameters zipParameters = new ZipParameters();
        zipParameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);
        zipParameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);
        zipParameters.setEncryptFiles(true);
        zipParameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_AES);
        zipParameters.setAesKeyStrength(Zip4jConstants.AES_STRENGTH_256);
        zipParameters.setPassword(password);

        zipFile.addFiles(new ArrayList<>(filesToZip), zipParameters);
        ZipFile zipFile = new ZipFile(zipFileName);

        ZipParameters zipParameters = new ZipParameters();
        zipParameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);
        zipParameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);

        zipFile.addFiles(new ArrayList<>(filesToZip), zipParameters);
有没有办法用Java实现这个场景


提前感谢…

无论如何,我是用zip4j找到的。以下代码段可用于创建密码保护和非密码保护的文件

对于要进行密码保护的文件:

foo.zip
 foo1.txt
 *secure
  *secure1.txt
  *secure2.txt
        ZipFile zipFile = new ZipFile(zipFileName);

        ZipParameters zipParameters = new ZipParameters();
        zipParameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);
        zipParameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);
        zipParameters.setEncryptFiles(true);
        zipParameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_AES);
        zipParameters.setAesKeyStrength(Zip4jConstants.AES_STRENGTH_256);
        zipParameters.setPassword(password);

        zipFile.addFiles(new ArrayList<>(filesToZip), zipParameters);
        ZipFile zipFile = new ZipFile(zipFileName);

        ZipParameters zipParameters = new ZipParameters();
        zipParameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);
        zipParameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);

        zipFile.addFiles(new ArrayList<>(filesToZip), zipParameters);
ZipFile-ZipFile=新的ZipFile(zipFileName);
ZipParameters ZipParameters=新的ZipParameters();
zipParameters.SetCompression方法(Zip4jConstants.COMP_DEFLATE);
zipParameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);
zipParameters.setEncryptFiles(true);
zipParameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_AES);
zipParameters.setAesKeyStrength(Zip4jConstants.AES_STRENGTH_256);
zipParameters.setPassword(密码);
addFiles(新的ArrayList(filesToZip),zippParameters);
以及不受密码保护的文件:

foo.zip
 foo1.txt
 *secure
  *secure1.txt
  *secure2.txt
        ZipFile zipFile = new ZipFile(zipFileName);

        ZipParameters zipParameters = new ZipParameters();
        zipParameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);
        zipParameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);
        zipParameters.setEncryptFiles(true);
        zipParameters.setEncryptionMethod(Zip4jConstants.ENC_METHOD_AES);
        zipParameters.setAesKeyStrength(Zip4jConstants.AES_STRENGTH_256);
        zipParameters.setPassword(password);

        zipFile.addFiles(new ArrayList<>(filesToZip), zipParameters);
        ZipFile zipFile = new ZipFile(zipFileName);

        ZipParameters zipParameters = new ZipParameters();
        zipParameters.setCompressionMethod(Zip4jConstants.COMP_DEFLATE);
        zipParameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);

        zipFile.addFiles(new ArrayList<>(filesToZip), zipParameters);
ZipFile-ZipFile=新的ZipFile(zipFileName);
ZipParameters ZipParameters=新的ZipParameters();
zipParameters.SetCompression方法(Zip4jConstants.COMP_DEFLATE);
zipParameters.setCompressionLevel(Zip4jConstants.DEFLATE_LEVEL_NORMAL);
addFiles(新的ArrayList(filesToZip),zippParameters);
此mavne依赖项:


net.lingala.zip4j
zip4j
2.6.1
代码:

ZipParameters参数=新的ZipParameters();
parameters.setEncryptFiles(true);
参数.setEncryptionMethod(EncryptionMethod.ZIP_标准);
ZipFile zip=新ZipFile(destFile,PASSWORD.toCharArray());
zip.setCharset(InternalZipConstants.CHARSET_UTF_8);
用于(文件:srcFiles){
if(file.isFile()){
addFile(文件,参数);
}否则{
zip.addFolder(文件、参数);
}
}