Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/361.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
没有子文件夹的Java解压.zip文件_Java_Unzip_Zip4j - Fatal编程技术网

没有子文件夹的Java解压.zip文件

没有子文件夹的Java解压.zip文件,java,unzip,zip4j,Java,Unzip,Zip4j,我正在使用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 由于

我正在使用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();
        }
    }
}
它本身不是“直接”的,但您可以解压缩到临时目录并将内容移动到桌面

一个优点是,如果在同一个驱动器上使用move,则整个目录将一次性显示在桌面上,而不是一部分一部分地显示。

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

一个优点是,如果在同一驱动器上使用move,则整个目录将一次性显示在桌面上,而不是一部分一部分地显示