我已经创建了一个用于服务器的备份系统,称为EasyBackup。该系统运行良好,并使用压缩文件。有人要求我添加一个特性来向压缩文件夹中添加密码,但是我无法找到一种方法来使用Java实用程序类,所以我决定使用Zip4j。
Zip4j完美地添加了密码,但是当我添加一个文件夹时,它会添加所有的文件和子文件夹。
我有一个选项,用户可以豁免文件和文件夹,所以我需要一种方法来保持这种能力。
如何使用Zip4J豁免文件和文件夹。是否有一种手动添加文件夹和文件的方法,以便不添加子文件?
如果不是,修改Zip4J的源代码是否可行?还有另一个图书馆已经这样做了吗?
发布于 2018-04-03 19:48:25
我通过修改Zip4j来解决这个问题。我做了一个粗略的改变哪种滥用静态,但它是在一个实用程序类,所以我不太关心。
我在Zip4jUtil类中做了以下更改,并使用一个方法创建了一个名为ExemptFileHandler的接口:
public boolean isExempt(File file);
然后,在Zip4jUtil类中,我创建了以下静态对象:
private static ExemptFileHandler handler;
当然,我修改了getFilesInDirectoryRec递归方法如下:
for(int i = 0; i < filesDirs.size(); i++) {
File file = (File)filesDirs.get(i);
if (file.isHidden() && !readHiddenFiles) {
return result;
}
if(handler == null || !handler.isExempt(file)) {
result.add(file);
if (file.isDirectory()) {
List deeperList = getFilesInDirectoryRec(file, readHiddenFiles);
result.addAll(deeperList);
}
}
}这使我现在可以豁免文件和文件夹。这是个粗野的解决办法。有了这个补丁,我只能一次创建一个压缩文件,除非我同意每个压缩文件的豁免文件是相同的。我可以进一步修改它,但这是我需要做的所有工作,它确实如此。
https://stackoverflow.com/questions/49636407
复制相似问题