如何在 Java 中读取和打印 Zip 文件中的所有文件?

2025 年 3 月 29 日 | 阅读 3 分钟

Zip 文件是一种压缩文件,它允许将多个文件存储在一个文件中,因此是存储大数据的最佳选择。要在 Java 中读取和打印 zip 文件的内容,您可以使用 `java.util.zip` 包,该包提供了用于读取和写入 zip 文件的类。

ZipEntry 类用于标记 zip 文件及其内容,而 ZipFile 类用于读取 zip 文件的内容。在代码中,我们创建一个 ZipFile 对象来读取我们想要读取的 zip 文件,然后使用 `entries()` 方法获取 zip 文件中条目的列表。

然后,我们遍历 zip 文件中的每个条目,并使用 `getName()` 方法打印其名称。要读取每个条目的内容,我们使用 `getInputStream()` 方法获取该条目的输入流。然后,我们创建一个缓冲区来保存输入流数据,并通过循环将数据读入缓冲区。最后,我们将缓冲区数据转换为字符串并打印出来。

如果找不到 zip 文件,代码将抛出带有“文件未找到”消息的 IOException,可以使用 try-catch 块来处理。

方法:读取和打印 Zip 文件中的所有文件

考虑到一个存储名为 Reference.zip 的 zip 文件的系统。它创建这些类的对象并将其初始化为 null。然后,它打开一个文件输入流来读取 zip 文件,以及一个缓冲输入流来读取其内容。while 循环用于读取和打印 zip 文件名,直到最后一行。

算法

  1. 将 FileInputStream、ZipInputStream 和 ZipEntry 对象初始化为 null。
  2. 允许用户在读取输入时提供 zip 文件的位置。
    Read and Print All Files From a Zip File in Java
  3. 打开 FileInputStream 并输入 zip 文件的路径 (C:\\Users\\maddu\\OneDrive\\Desktop\\Watcher\\Reference.zip)。
    Read and Print All Files From a Zip File in Java
  4. 创建 BufferedInputStream 来读取 zip 文件的内容。
  5. 构建 ZipInputStream,以便在 while 循环中使用时可以读取 zip 文件条目并输出它们的名称。
  6. 处理文件处理过程中的异常,并关闭 ZipInputStream 和 BufferedInputStream。

实施

文件名: ReadFile.java

输出

Files in the zip are as follows: 
Bad Operand Types Error in Java.docx
Chained Exceptions in Java.docx
ConcurrentSkipListSet in Java.docx
Final static variable in Java.docx
Image1.jpg
Image2.jpg
Image3.jpg
Minimum number of subsets with distinct elements.docx
Separators In Java.docx