0

我必须将 InputStream 作为参数传递给第 3 方库,该库将从 InputStream 读取完整内容并完成其工作。

我的问题是,我的一些文件是 Zip 文件 - 有多个 ZipEntry。据我了解,一次可以读取一个 zipEntry,然后执行 zipInputStream.getNextEntry() ,然后再次读取,依此类推。但是,第 3 方库不理解这一点,需要一个 InputStream。zip 文件的所有 zipEntries 都应作为单个 inputStream 提供。

请赐教我如何做到这一点。我不能使用 ZipFile,因为文件没有存储在本地(在不同的服务器中)。我也无法读取所有 zipEntries 并构造 ByteArrayOutputStream 或字符串,因为文件可能非常大,这会导致内存使用量激增。

我想要一种方法让一个 inputStream 透明地从单个 zip 文件的多个 zip 条目中读取。

在此先感谢,普拉萨纳

4

1 回答 1

0

我不是专家,但我看到两种方法可以满足您的要求:

虽然我不会称其为最有效的方法,但相当简单的方法是将它们全部写入缓冲区,然后使用该缓冲区来提供输入流。您可以考虑使用 ByteArrayOutputStream,将其提供给您的 ZipEntries,然后使用相同的 buf 创建一个 ByteArrayInputStream

或者,SequenceInputStream 听起来像是您所追求的,但我没有机会详细研究它。

巴拉德

于 2011-02-24T09:05:19.893 回答