2010-08-24 50 views
0

我必須將InputStream作爲參數傳遞給第三方庫,該庫將讀取InputStream中的完整內容並完成其工作。如何通過一個InputStream讀取多個ZipEntries

我的問題是,我的一些文件是Zip文件 - 具有多個ZipEntry。據我所知,一次可以讀取一個zipEntry,然後執行zipInputStream.getNextEntry(),然後再次讀取等等。但是,第三方庫不理解這一點,並期望一個InputStream。一個zip文件的所有zipEntries應該作爲一個inputStream提供。

請指教我如何做到這一點。我不能使用ZipFile,因爲這個文件沒有存儲在本地(在不同的服務器上)。我也無法讀取所有zipEntries並構造一個ByteArrayOutputStream或一個字符串,因爲這些文件可能非常大,並且會增加內存使用量。

我想要一種方法讓一個inputStream從一個zip文件的多個zip條目中透明地讀取。

在此先感謝, 人員Prasanna

+0

這將是有益的,告訴我們你所使用的第三方庫,我猜SharpZipLib(http://www.icsharpcode.net/opensource/sharpziplib/)基礎上,你在問題中提到的類型=) – Rob 2010-08-24 12:01:31

回答

0

我不是專家,但我認爲這樣做的兩種方式都在問什麼:

雖然我不會把它最有效的方式,相當萬無一失的方法是將它們全部寫入緩衝區,然後使用該緩衝區來提供輸入流。你可以看看使用ByteArrayOutputStream,餵它你的ZipEntries,然後用相同的buf創建一個ByteArrayInputStream

或者,SequenceInputStream聽起來像它做你以後的事情,但我沒有機會看看它非常詳細。

K.Barad

相關問題