zip4j 版本 2.2.4
压缩
ZipFile zipFile =new ZipFile(zipPath);
ZipParameters zipParameters =new ZipParameters();
zipParameters.setEncryptionMethod(EncryptionMethod.AES);
zipParameters.setAesKeyStrength(AesKeyStrength.KEY_STRENGTH_256);
zipParameters.setEncryptFiles(Boolean.TRUE);
zipFile.setPassword(password.toCharArray());
zipFile.addFiles(sourceFiles, zipParameters);
解压缩
ZipFile zipFile =new ZipFile(sourceZip);
zipFile.setPassword(password.toCharArray());
zipFile.extractAll(target);
用完后的疑问? 在压缩的时候我们设置了了加密方式为什么在解压缩的时候不需要设置,
带着疑问解读了下源码 HeaderReader.java
byte[] generalPurposeFlags =new byte[2];
zip4jRaf.readFully(generalPurposeFlags);
fileHeader.setEncrypted(BitUtils.isBitSet(generalPurposeFlags[0], 0));
解压缩的时候读取了zip文件的文件头信息,所以不是不需要设置而是底层帮我们做了
网友评论