首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在Java中使用Zip4j的豁免文件和文件夹

在Java中使用Zip4j的豁免文件和文件夹
EN

Stack Overflow用户
提问于 2018-04-03 17:57:16
回答 1查看 422关注 0票数 1

我已经创建了一个用于服务器的备份系统,称为EasyBackup。该系统运行良好,并使用压缩文件。有人要求我添加一个特性来向压缩文件夹中添加密码,但是我无法找到一种方法来使用Java实用程序类,所以我决定使用Zip4j

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

我有一个选项,用户可以豁免文件和文件夹,所以我需要一种方法来保持这种能力。

如何使用Zip4J豁免文件和文件夹。是否有一种手动添加文件夹和文件的方法,以便不添加子文件?

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

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-04-03 19:48:25

我通过修改Zip4j来解决这个问题。我做了一个粗略的改变哪种滥用静态,但它是在一个实用程序类,所以我不太关心。

我在Zip4jUtil类中做了以下更改,并使用一个方法创建了一个名为ExemptFileHandler的接口:

public boolean isExempt(File file);

然后,在Zip4jUtil类中,我创建了以下静态对象:

private static ExemptFileHandler handler;

当然,我修改了getFilesInDirectoryRec递归方法如下:

代码语言:javascript
复制
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);
        }
    }
}

这使我现在可以豁免文件和文件夹。这是个粗野的解决办法。有了这个补丁,我只能一次创建一个压缩文件,除非我同意每个压缩文件的豁免文件是相同的。我可以进一步修改它,但这是我需要做的所有工作,它确实如此。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49636407

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档