ToB企服应用市场:ToB评测及商务社交产业平台

标题: 使用 ZipArchiveInputStream 读取压缩包内文件总数 [打印本页]

作者: 刘俊凯    时间: 2024-7-16 02:36
标题: 使用 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. public class Test {
  2.     public static void main(String[] args) {
  3.         AtomicInteger atomicInteger = new AtomicInteger(0);
  4.         File file = FileUtil.file("C:\\Users\\a\\Downloads\\train_val_images.zip");
  5.         try (ZipArchiveInputStream inputStream = new ZipArchiveInputStream(new FileInputStream(file),UTF_8)){
  6.             ZipArchiveEntry nextZipEntry;
  7.             while ( (nextZipEntry = inputStream.getNextZipEntry()) != null)
  8.             if (!nextZipEntry.isDirectory()){
  9.                 atomicInteger.incrementAndGet();
  10.             }
  11.         }  catch (Exception e) {
  12.             e.printStackTrace();
  13.         }
  14.         System.out.println(atomicInteger.intValue());
  15.     }
  16. }
复制代码
测试效果




免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。




欢迎光临 ToB企服应用市场:ToB评测及商务社交产业平台 (https://dis.qidao123.com/) Powered by Discuz! X3.4