[英]Semi password protected Zip files in Java
我需要使用 Java 創建一個 zip 文件。 庫並不重要,但 zip4j 似乎是一個不錯的選擇。 在這個 zip 文件中,只有部分文件或子目錄會受到密碼保護。 例如,在以下 zip 文件中,只有以“*”開頭的文件才會受到密碼保護:
foo.zip
foo1.txt
*secure
*secure1.txt
*secure2.txt
有沒有辦法在 Java 中實現這個場景?
提前致謝...
這個 mavne 依賴:
<dependency>
<groupId>net.lingala.zip4j</groupId>
<artifactId>zip4j</artifactId>
<version>2.6.1</version>
</dependency>
代碼:
ZipParameters parameters = new ZipParameters();
parameters.setEncryptFiles(true);
parameters.setEncryptionMethod(EncryptionMethod.ZIP_STANDARD);
ZipFile zip = new ZipFile(destFile, PASSWORD.toCharArray());
zip.setCharset(InternalZipConstants.CHARSET_UTF_8);
for (File file : srcFiles) {
if (file.isFile()) {
zip.addFile(file, parameters);
} else {
zip.addFolder(file, parameters);
}
}
無論如何,我是通過使用 zip4j 找到的。 以下代碼段可用於創建受密碼保護和不受密碼保護的文件。
對於受密碼保護的文件:
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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.