使用 ZipArchiveInputStream 读取压缩包内文件总数

读取压缩包内文件总数

简介

ZipArchiveInputStream 是 Apache Commons Compress 库中的一个类,用于读取 ZIP 格式的压缩文件。在处理 ZIP 文件时,编码格式是一个重要的问题,因为它决定了如何解释文件中的字符数据。通常情况下,ZIP 文件中的文本文件是以特定的字符编码格式存储的,例如 UTF-8 或 ISO-8859-1。但是,ZIP 规范并没有规定文件的编码格式,因此不同的 ZIP 文件可能使用不同的编码。

ZipArchiveInputStream 允许用户设置编码格式,以正确处理 ZIP 文件中的文件名或文件内容。默认情况下,ZipArchiveInputStream 可能使用 UTF-8 编码来读取文件名,但如果 ZIP 文件中的文件名使用了不同的编码,那么就需要显式地设置正确的编码格式。

例如,如果 ZIP 文件中的文件名使用了 GBK 编码,那么在创建 ZipArchiveInputStream 对象时,需要调用 setEncoding("GBK") 方法来设置正确的编码格式。这样,ZipArchiveInputStream 就能正确地解析文件名,避免乱码问题。

使用 ZipArchiveInputStream 的基本步骤如下:

  1. 创建一个 ZipFile 对象,传入一个 ZIP 文件的 File 对象或 ZIP 文件的路径作为参数。
  2. 通过 ZipFile 对象的 getInputStream 方法获取一个 InputStream 对象,用于读取 ZIP 文件的数据。
  3. 创建一个 ZipArchiveInputStream 对象,传入上一步获取的 InputStream 对象作为参数。
  4. 使用 ZipArchiveInputStream 对象的 getNextEntry 方法来获取 ZIP 文件中的每一个条目(即压缩包内的文件或文件夹),并对其进行处理。可以使用 read 方法读取条目的数据。
  5. 处理完一个条目后,使用 closeEntry 方法关闭该条目。

代码逻辑

public class Test {
    public static void main(String[] args) {
        AtomicInteger atomicInteger = new AtomicInteger(0);
        File file = FileUtil.file("C:\\Users\\a\\Downloads\\train_val_images.zip");
        try (ZipArchiveInputStream inputStream = new ZipArchiveInputStream(new FileInputStream(file),UTF_8)){
            ZipArchiveEntry nextZipEntry;
            while ( (nextZipEntry = inputStream.getNextZipEntry()) != null)
            if (!nextZipEntry.isDirectory()){
                atomicInteger.incrementAndGet();
            }
        }  catch (Exception e) {
            e.printStackTrace();
        }
        System.out.println(atomicInteger.intValue());
    }
}

测试效果

在这里插入图片描述
在这里插入图片描述

相关推荐

  1. golang 读取压缩文件 && 写文件

    2024-03-16 07:36:05       27 阅读
  2. go优雅读取zip压缩

    2024-03-16 07:36:05       18 阅读
  3. 读取文件例题总结 python

    2024-03-16 07:36:05       11 阅读
  4. 使用 Python 读取 Word 文件

    2024-03-16 07:36:05       19 阅读

最近更新

  1. TCP协议是安全的吗?

    2024-03-16 07:36:05       19 阅读
  2. 阿里云服务器执行yum,一直下载docker-ce-stable失败

    2024-03-16 07:36:05       19 阅读
  3. 【Python教程】压缩PDF文件大小

    2024-03-16 07:36:05       19 阅读
  4. 通过文章id递归查询所有评论(xml)

    2024-03-16 07:36:05       20 阅读

热门阅读

  1. MFC中CString的用法及使用示例

    2024-03-16 07:36:05       20 阅读
  2. gPTP 协议和 PTP 与 TSN 的关系

    2024-03-16 07:36:05       20 阅读
  3. @Service

    2024-03-16 07:36:05       21 阅读
  4. 5.69 BCC工具之runqlen.py解读

    2024-03-16 07:36:05       22 阅读
  5. Redis 的 RDB 和 AOF

    2024-03-16 07:36:05       16 阅读
  6. HTML5、CSS3面试题(四)

    2024-03-16 07:36:05       18 阅读
  7. Docker——问题解决:服务器端和Windows端IP互通

    2024-03-16 07:36:05       19 阅读
  8. C语言实现B树算法

    2024-03-16 07:36:05       18 阅读
  9. 【物联网】Modbus 协议简介

    2024-03-16 07:36:05       21 阅读