我必须将InputStream作为参数传递给第三方库,第三方库将从InputStream中读取完整内容并完成其工作。
我的问题是,我的一些文件是Zip文件 - 有多个ZipEntry。根据我的理解,一次可以读取一个zipEntry,然后执行zipInputStream.getNextEntry()然后再次读取,依此类推。但是,第三方库不理解这一点,并期望单个InputStream。 zip文件的所有zipEntries都应该作为单个inputStream提供。
请告诉我如何做到这一点。我不能使用ZipFile,因为文件不存储在本地(在不同的服务器中)。我也无法读取所有zipEntries并构造ByteArrayOutputStream或字符串,因为文件可能非常大并且会增加内存使用量。
我想要一种方法让一个inputStream从一个zip文件的多个zip条目中透明地读取。
提前谢谢, Prasanna答案 0 :(得分:0)
我不是专家,但我看到了两种方法来做你要求的事情:
虽然我不会称之为最有效的方法,但相当简单的方法是将它们全部写入缓冲区,然后使用该缓冲区来提供输入流。您可以查看使用ByteArrayOutputStream,将其提供给ZipEntries,然后使用相同的buf创建ByteArrayInputStream
或者,SequenceInputStream听起来就像你所做的那样,但我没有机会详细研究它。
K.Barad