gpt4 book ai didi

java - 有没有一种方法可以从 ZipInputStream 读取特定文件而不必遍历整个条目集?

转载 作者:行者123 更新时间:2023-11-30 08:14:07 26 4
gpt4 key购买 nike

我想知道是否有一种方法可以直接从 ZipFile/ZipInputStream 读取特定文件,而不必遍历整个条目集。我想这可能是一个很大的开销,如果存档包含大量文件。有没有更好的办法?

我知道这可以用 TrueZip 来完成,而且我已经做过一段时间了,但我想知道现在 1.8 SDK 是否包含更合适的东西......?

最佳答案

在java 7中,你可以处理zip files as a Filesystem .

虽然这确实提供了一些方便的访问方法,但与遍历条目列表以查找单个文件相比,它不会执行任何不同的操作。

获取特定路径的输入流:

Path zipfile = Paths.get("/codeSamples/zipfs/zipfstest.zip");
FileSystem fs = FileSystems.newFileSystem(zipfile, null);
Path entry = fs.getPath("/my/entry.txt");
InputStream is = Files.newInputStream(entry);

另外一定要close完成后的 FileSystem 实例。

http://docs.oracle.com/javase/8/docs/api/java/nio/file/FileSystem.html#getPath-java.lang.String-java.lang.String...-

http://docs.oracle.com/javase/8/docs/api/java/nio/file/Files.html#newInputStream-java.nio.file.Path-java.nio.file.OpenOption...-

关于java - 有没有一种方法可以从 ZipInputStream 读取特定文件而不必遍历整个条目集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29688585/

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