gpt4 book ai didi

java - 如何从远程存档文件中提取单个文件?

转载 作者:搜寻专家 更新时间:2023-10-30 21:22:34 26 4
gpt4 key购买 nike

给定

  1. 存档的 URL(例如 zip 文件)
  2. 该存档内文件的全名(包括路径)

我正在寻找一种方法(最好是使用 Java)来创建该文件的本地副本,无需先下载整个存档

根据我(有限的)理解,这应该是可能的,尽管我不知道该怎么做。我一直在使用 TrueZip ,因为它似乎支持多种存档类型,但我怀疑它以这种方式工作的能力。有没有人对这类事情有任何经验?

编辑:能够使用 tarball 和压缩 tarball 做到这一点对我来说也很重要。

最佳答案

嗯,至少,您必须下载存档部分,包括您要提取的文件的压缩数据。这建议采用以下解决方案:打开存档的 URLConnection,获取其输入流,将其包装在 ZipInputStream 中,然后重复调用 getNextEntry()closeEntry() 循环访问文件中的所有条目,直到找到所需条目。然后您可以使用 ZipInputStream.read(...) 读取其数据。

Java 代码看起来像这样:

URL url = new URL("http://example.com/path/to/archive");
ZipInputStream zin = new ZipInputStream(url.getInputStream());
ZipEntry ze = zin.getNextEntry();
while (!ze.getName().equals(pathToFile)) {
zin.closeEntry(); // not sure whether this is necessary
ze = zin.getNextEntry();
}
byte[] bytes = new byte[ze.getSize()];
zin.read(bytes);

当然,这是未经测试的。

关于java - 如何从远程存档文件中提取单个文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3125841/

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