在 Java 中使用 Zip4j 免除文件和文件夹
Exempt files and folder with Zip4j in Java
我为服务器创建了一个名为 EasyBackup 的备份系统。该系统运行良好,并且使用压缩文件。有人要求我添加一个功能来为压缩文件夹添加密码,但我找不到使用 Java 的压缩实用程序 类 的方法,所以我决定使用 [=11] =].
Zip4j 完美地添加了密码,但是当我添加文件夹时,它会添加所有文件和子文件夹。
我有一个选项供用户免除文件和文件夹,因此我需要一种方法来保留此功能。
如何使用 Zip4J 豁免文件和文件夹。有没有办法手动添加文件夹和文件而不添加子项?
如果没有,修改 Zip4J 的源代码是否可行?是否已经有其他图书馆这样做了?
我通过修改 Zip4j 解决了这个问题。我做了一个粗略的改变,它是一种滥用静态的,但它在一个实用程序中 class,所以我不太担心。
我在 Zip4jUtil class 中进行了以下更改,并使用一种方法创建了一个名为 ExemptFileHandler 的接口:
public boolean isExempt(File file);
然后在 Zip4jUtil class 我制作了以下静态对象:
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);
}
}
}
现在我可以免除文件和文件夹。这是一个粗略的修复。通过此修复,我一次只能创建一个压缩文件,除非我同意每个压缩文件的豁免文件相同。我可以进一步修改它,但这就是让它工作所需的全部,它确实如此。
我为服务器创建了一个名为 EasyBackup 的备份系统。该系统运行良好,并且使用压缩文件。有人要求我添加一个功能来为压缩文件夹添加密码,但我找不到使用 Java 的压缩实用程序 类 的方法,所以我决定使用 [=11] =].
Zip4j 完美地添加了密码,但是当我添加文件夹时,它会添加所有文件和子文件夹。
我有一个选项供用户免除文件和文件夹,因此我需要一种方法来保留此功能。
如何使用 Zip4J 豁免文件和文件夹。有没有办法手动添加文件夹和文件而不添加子项?
如果没有,修改 Zip4J 的源代码是否可行?是否已经有其他图书馆这样做了?
我通过修改 Zip4j 解决了这个问题。我做了一个粗略的改变,它是一种滥用静态的,但它在一个实用程序中 class,所以我不太担心。
我在 Zip4jUtil class 中进行了以下更改,并使用一种方法创建了一个名为 ExemptFileHandler 的接口:
public boolean isExempt(File file);
然后在 Zip4jUtil class 我制作了以下静态对象:
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);
}
}
}
现在我可以免除文件和文件夹。这是一个粗略的修复。通过此修复,我一次只能创建一个压缩文件,除非我同意每个压缩文件的豁免文件相同。我可以进一步修改它,但这就是让它工作所需的全部,它确实如此。