gpt4 book ai didi

Java:使用路径的 ZipFile

转载 作者:行者123 更新时间:2023-11-30 06:52:40 28 4
gpt4 key购买 nike

我有一个 Path 可以在虚拟文件系统 (jimfs) 上压缩文件,我需要使用 ZipFile 打开这个 zip 文件。

但是 ZipFile 中没有构造函数来获取 Path 作为参数,只有 File

但是,我无法从我的 Path 创建一个 File (path.toFile()),因为我得到了 UnsupportedOperationException。如何使用 ZipFile 打开我的 zip 文件?或者也许还有其他方法可以处理不在默认文件系统上的 zip 文件?

最佳答案

ZipFile 类仅限于文件系统中的文件。

替代方法是使用 ZipInputStream。使用 Path 创建一个 InputStream

Path path = ...
InputStream in = Files.newInputStream(path, openOptions)

并使用 InputStream 创建一个 ZipInputStream。这种方式应该按预期工作:

ZipInputStream zin = new ZipInputStream(in)

所以推荐的使用方式是:

try (ZipInputStream zin = new ZipInputStream(Files.newInputStream(path))) {
// do something with the ZipInputStream
}

请注意,使用 ZipInputStream 解压缩某些 ZIP 文件 will fail because of their ZIP structure .这是 ZIP 格式的技术限制,无法解决。在这种情况下,您必须在文件系统或内存中创建一个临时文件,并使用不同的 ZIP 类,如 ZipFile

关于Java:使用路径的 ZipFile,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38552650/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com