当前位置: 首页 > 知识库问答 >
问题:

列表无需解压缩即可压缩目录

沈伟
2023-03-14

我正在用Java构建一个文件浏览器,并在JTrees中列出文件/文件夹。我现在想做的是,当我到达一个压缩文件夹时,我想列出它的内容,但不首先提取它。

如果有人有想法,请分享。

共有3个答案

胡景澄
2023-03-14

对于处理ZIP文件,您可以使用ZipFile类。它有方法条目(),返回包含在ZIP文件中的条目列表。此信息包含在ZIP头中,不需要提取。

晁聪
2023-03-14

使用java.util.zip.ZipFile类,特别是它的条目方法

你会得到这样的结果:

ZipFile zipFile = new ZipFile("testfile.zip");
Enumeration zipEntries = zipFile.entries();
String fname;
while (zipEntries.hasMoreElements()) {
    fname = ((ZipEntry)zipEntries.nextElement()).getName();
    ...
}
黄宏旷
2023-03-14

我建议你看看ZipFile。条目()。

下面是一些代码:

try (ZipFile zipFile = new ZipFile("test.zip")) {
    Enumeration zipEntries = zipFile.entries();
    while (zipEntries.hasMoreElements()) {
        String fileName = ((ZipEntry) zipEntries.nextElement()).getName();
        System.out.println(fileName);
    }
}

如果您使用Java8,您可以使用ZipFile::stream避免使用几乎不建议使用的枚举类,如下所示:

zipFile.stream()
       .map(ZipEntry::getName)
       .forEach(System.out::println);

如果您需要知道一个条目是否是一个目录,您可以使用ZipEntry.isDirectory。您不能获得比不提取文件更多的信息(原因很明显)。

如果要避免提取所有文件,可以使用ZipFile一次提取一个文件。getInputStream用于每个ZipEntry。(请注意,您不需要将未打包的数据存储在磁盘上,您只需读取输入流并在运行时丢弃字节即可。

 类似资料:
  • Ziplist 是由一系列特殊编码的内存块构成的列表, 一个 ziplist 可以包含多个节点(entry), 每个节点可以保存一个长度受限的字符数组(不以 \0 结尾的 char 数组)或者整数, 包括: 字符数组 长度小于等于 63 ()字节的字符数组 长度小于等于 16383 () 字节的字符数组 长度小于等于 4294967295 ()字节的字符数组 整数 4 位长,介于 0 至 12 之

  • tar [-]c|x|u|r|t[z|j][v] -f 归档文件 [待打包文件] 将多个文件打包为一个归档文件,可以在打包的同时进行压缩。支持的格式为 tar(归档)、gz(压缩)、bz2(压缩率更高,比较耗时) 操作选项 -c 创建 -x 解包 -u 更新 -r 添加 -t 查看 -d 比较压缩包内文件和文件 -A 将 tar 文件添加到归档文件中 格式选项 -z 使用 gz 压缩格式 -j 使

  • 问题内容: 我知道这是一项容易的任务,但是更改代码后它停止工作,并且无法恢复!我实际上使用了两个函数来进行压缩和解压缩,尽管实际上它是“ jar”和“ unjar”,但这并没有太大的区别 任何帮助/建议吗? 创建JarFile时发生错误: 问题答案: 我不知道这是否是您的问题,但是通常最好在完成写入后关闭每个zip条目。 请参阅。 在显示的代码中,不会关闭邮政编码中的最后一个条目。您也不会显示关闭

  • OS-X 优胜美地 目标-C 压缩视频输入(AVCaptureDeviceFormat=='muxx'/'isr') 压缩视频流作为支持“muxx/isr”有效载荷格式的HAL捕获设备(AVCaptureDevice)暴露于操作系统,我希望能够直接访问压缩有效载荷的原始字节(不解压)。 使用“+(AVCaptureDevice*)DeviceWithUniqueID:(NSString*)Devi

  • 我正在使用Julia的ZipFile包来提取和处理csv文件。没问题,但是当我遇到zip文件中的zip文件时,我也想处理它,但是遇到了一个错误。 Julia ZipFile文档如下:https://zipfilejl.readthedocs.io/en/latest/ 对如何做到这一点有什么想法吗?

  • 问题内容: 我认为“解压”可能是错误的词汇-抱歉,我确定这是一个重复的问题。 我的问题很简单:在一个需要项目列表的函数中,如何在不出错的情况下传递Python列表项目? 当然,必须有一种方法来扩展列表,并在蹄上传递函数吗? 问题答案: