0

我正在开发一个 java 项目,该项目需要我访问多个嵌入式 zip 文件和目录中的文件。

例如,archive1.zip/archive1/archive2.zip/archive2/directory1/file_that_I_need.txt。

如果在提取每个 zip 文件时,它会立即列出其内容,但里面有一个包含所有内容的文件夹,这会容易得多。

我在网上找到的示例处理 zip 文件,这些文件在提取时包含他们需要访问的文件,但我找不到任何处理访问 zip 文件目录中的文件的示例。对此的任何建议都会很棒。

谢谢!

4

2 回答 2

1

鉴于禁止创建新文件,您几乎被ZipInputStream所困扰。当您找到与ZipEntry嵌入存档相对应的文件时,您可以读取其流以找到实际文件。您可以根据需要递归处理任意多个级别的存档。

如果您要处理单个文件,这可以正常工作。但是,重新读取多个文件的存档可能会很昂贵。更好的解决方案是至少以ZipFile的形式打开外部存档,该文件对实际文件进行内存映射。

如果您随后可以将包含的存档解压缩到一个临时目录中并以ZipFiles 的形式打开它们,您可能会看到速度大大提高(只要您从每个嵌入式存档中提取多个文件)。

于 2012-08-02T16:53:13.910 回答
0

您还可以查看http://truezip.java.net/ 我使用的是它的旧版本,它比 Java 内置的支持功能强大得多。我认为还有一个 Apache Commons 库用于从嵌套归档结构中读取文件。

于 2012-08-02T16:55:36.913 回答