0

我创建了一个名为 EasyBackup 的服务器备份系统。该系统运行良好,它使用压缩文件。有人要求我添加一个功能来为压缩文件夹添加密码,但我找不到使用 Java 的 zip 实用程序类的方法,所以我决定使用Zip4j

Zip4j 完美地添加了密码,但是当我添加一个文件夹时,它会添加所有文件和子文件夹。

我可以选择让用户豁免文件和文件夹,所以我需要一种方法来保留这种能力。

如何使用 Zip4J 豁免文件和文件夹。有没有办法手动添加文件夹和文件,这样孩子就不会被添加?

如果没有,修改 Zip4J 的源代码是否可行?是否有另一个图书馆已经这样做了?

4

1 回答 1

0

我通过修改 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);
        }
    }
}

现在,这使我能够免除文件和文件夹。这是一个粗略的修复。使用此修复程序,我一次只能创建一个压缩文件,除非我可以接受每个压缩文件的豁免文件相同。我可以进一步修改它,但这就是让它工作所需的全部内容,而且确实如此。

于 2018-04-03T19:48:25.727 回答