当前位置: 首页 > 面试题库 >

Java:提取具有多个子目录的zip文件

龙涵蓄
2023-03-14
问题内容

我有一个.zip(Meow.zip),它有多个文件和文件夹,像这样

  1. Meow.zip

    • File.txt
    • 程式
    • Resource.xml

    • 另一个文件夹

      • 其他的东西

      • MoreResource.xml

我到处都看过,但找不到任何有效的方法。提前致谢!


问题答案:

这是一个从zip文件解压缩文件并重新创建目录树的类。

import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.zip.ZipEntry;
import java.util.zip.ZipFile;

public class ExtractZipContents {

    public static void main(String[] args) {

        try {
            // Open the zip file
            ZipFile zipFile = new ZipFile("Meow.zip");
            Enumeration<?> enu = zipFile.entries();
            while (enu.hasMoreElements()) {
                ZipEntry zipEntry = (ZipEntry) enu.nextElement();

                String name = zipEntry.getName();
                long size = zipEntry.getSize();
                long compressedSize = zipEntry.getCompressedSize();
                System.out.printf("name: %-20s | size: %6d | compressed size: %6d\n", 
                        name, size, compressedSize);

                // Do we need to create a directory ?
                File file = new File(name);
                if (name.endsWith("/")) {
                    file.mkdirs();
                    continue;
                }

                File parent = file.getParentFile();
                if (parent != null) {
                    parent.mkdirs();
                }

                // Extract the file
                InputStream is = zipFile.getInputStream(zipEntry);
                FileOutputStream fos = new FileOutputStream(file);
                byte[] bytes = new byte[1024];
                int length;
                while ((length = is.read(bytes)) >= 0) {
                    fos.write(bytes, 0, length);
                }
                is.close();
                fos.close();

            }
            zipFile.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

}

来源:http : //www.avajava.com/tutorials/lessons/how-do-i-
unzip-the-contents-of-a-zip-
file.html



 类似资料:
  • 问题内容: 如果我选择一个zip文件,然后右键单击“在此处提取”,则会创建一个包含zip文件名的文件夹,并将zip文件的全部内容提取到其中。 但是,我想通过外壳转换几个zip文件。但是当我这样做 该文件夹未创建,但所有文件都提取到当前目录中。 我看过参数,但是没有这样的参数。我也试过 但是2. $ zipfile和4. $ zipfile 的扩展名必须使用sed删除。如果我做 它不起作用。 如何正

  • 问题内容: 列出1000多个目录和子目录中文件名的最快方法是什么? 编辑; 我使用的当前代码是: 问题答案: 看起来不错(递归遍历目录)瓶颈将是您需要执行的所有文件I / O操作,优化Java不会显示任何实际改进。

  • 问题内容: 如何解压缩到内存? 我尝试(返回上): 问题答案: 提取到文件系统,因此您将无法获得所需的内容。若要提取内存中的文件,请使用方法。 如果您确实需要内存中的全部内容,则可以执行以下操作:

  • 问题内容: 我正在尝试使用密码保护解压缩zip文件。我知道有一个名为“ zip4j”的Java库可以为我提供帮助。但是我无法打开zip4j网站来查看教程。 我已经用另一个镜像下载了zip4j库,但是我不知道如何使用它。有没有人可以粘贴使用zip4j解压缩密码保护zip文件的示例代码? zip4j网站 非常感谢! 问题答案: 请尝试以下操作,并确保您使用的是最新的Zip4j库(1.3.1):

  • 问题内容: 我在这篇文章中找到了这个ZipUtils类: 如何使用java压缩文件夹本身 我对其进行了修改,以便可以传递一个zip文件名。但是,它的唯一工作方式是使用硬编码的静态字符串。从数据库中获取zippedFile字符串。我已经将dbZippedFile和hardcodedZippedFile进行了比较,它们都是相同的……也许在FileOutputStream中使用非静态字符串会产生问题吗?

  • 本文向大家介绍php读取目录及子目录下所有文件名的方法,包括了php读取目录及子目录下所有文件名的方法的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了php读取目录及子目录下所有文件名的方法,分享给大家供大家参考。具体实现方法如下: 一般来说php中读取目录下的文件名的方式确实不少,最简单的是scandir,具体代码如下: 稍微复杂点的,来自于php手册: 这些都只能读取当前指定目录下的文