【问题标题】:Java unzip .zip file without subfolderJava解压缩没有子文件夹的.zip文件
【发布时间】:2016-01-10 15:35:56
【问题描述】:

我是用zip4j解压的,但是现在需要解压没有原始文件夹结构的.zip文件。

e.g.
desktop/abc.zip/
               /a
               /b/
                 /x.txt
                 /y.txt
                 /z.txt

我想将 abc.zip 中的所有文件直接解压到桌面。

e.g.
desktop/x.txt
       /y.txt
       /z.txt

由于 .zip 文件将受密码保护,我无法通过 java.util.zip 库执行此操作。我对我的要求进行了一些研究,但徒劳无功。我还尝试审查/重写 zip4j 的源代码,但这似乎超出了我的能力范围。

我是否错过了 zip4j 中可以帮助我轻松实现它的任何设置,或者是否有任何其他适合此要求的 java 库?

下面是我部分程序的源代码:

public class FileDecompressor {

    void decompressFiles(String sourceFile, String fileDestination) {
        decompressFiles(sourceFile, fileDestination, "");
    }

    void decompressFiles(String sourceFile, String fileDestination, String zipPassword) {
        try {
            ZipFile zipFile = new ZipFile(sourceFile);
            if (zipFile.isEncrypted()) {
                zipFile.setPassword(zipPassword);
            }
            zipFile.extractAll(fileDestination);
        } catch (ZipException e) {
            e.printStackTrace();
        }
    }
}

【问题讨论】:

    标签: java unzip zip4j


    【解决方案1】:

    它不是“直接”的,但您可以解压缩到临时目录并将内容移动到桌面。

    一个好处是,如果您在同一驱动器上使用移动,整个目录将同时出现在桌面上,而不是部分显示。

    【讨论】: