当前位置: 首页 > 面试题库 >

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

单于庆
2023-03-14
问题内容

给定

  1. 档案的网址(例如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);

当然,这是未经测试的。



 类似资料:
  • 问题内容: 我需要在zip文件中读取单个文件“ test.txt”的内容。整个zip文件是一个非常大的文件(2gb),其中包含很多文件(10,000,000),因此,提取整个文件对我而言不是可行的解决方案。如何读取单个文件? 问题答案: 尝试使用包装器: 您也可以使用:

  • 问题内容: 我需要从文件中读取内容(它们都是变量,当然不是常量)。最简单的方法是什么? 问题答案: 这个怎么样:

  • 问题内容: 在Linux桌面(RHEL4)上,我想从大文件(> 1 Gig)中提取一定范围的字节(通常小于1000)。我知道文件的偏移量和块的大小。 我可以编写代码来执行此操作,但是有命令行解决方案吗? 理想情况是: 问题答案: 尝试:

  • 我正在远程服务器上运行大量模拟(通过ssh)。这些模拟的结果作为.tar存档存储在此远程服务器上的存档目录中。 我想做的是编写一个bash脚本,它通过ssh连接到远程服务器,并从每个服务器中提取所需的输出文件。tar存档到本地硬盘上的单独文件夹中。 这些文件夹应与文件来自的.tar文件同名(例如,假设模拟 1 的输出存储在存档 S1 中.tar远程服务器上的存档中,我希望 .tar将此存档中的所有

  • 问题内容: 有没有一种方法可以用Java从远程git存储库中以编程方式下载单个文件? 我更喜欢使用尽可能少的带宽的解决方案,最好只下载单个文件。我不需要浏览存储库,我已经有了文件的路径。 我更喜欢不依赖于其他应用程序的解决方案(例如,在计算机上安装另一个git客户端)。一个包含git客户端实现本身的Java库是最佳的。 我可以使用SVNKit与Subversion进行类似的操作,并且我已经看到有g

  • 问题内容: 如何 使用PHP 从PDF文档中提取文本? (我不能使用其他工具,我没有root用户访问权限) 我发现一些函数可用于纯文本,但是它们不能很好地处理Unicode字符: http://www.hashbangcode.com/blog/zend-lucene-and-pdf-documents-part-2-pdf- data-extraction-437.html 问题答案: 下载 c