2012-12-28 34 views
1

在Java中,您必須執行 新的ZipFile(new File(「xxx.zip」)); 解壓zip文件。如何從Java中的字節數組創建ZipFile

現在我得到一個字節數組,其內容是一個zip文件。我從數據庫中獲取這個字節數組而不是文件。我想解壓這個「字節數組文件」,但沒有ZipFile構造函數的字節數組或字符串(我的意思是內容而不是文件路徑)。

有沒有解決方法? (當然,我不想寫這個字節數組到一個實際的文件並再次讀入到內存中。)

謝謝!

+0

所以你的字節數組包含一個壓縮文件中的內容,並要提取它,對不對??? –

+4

您可以改爲使用[ZipInputStream](http://docs.oracle.com/javase/6/docs/api/java/util/zip/ZipInputStream.html)。 – Perception

+0

@HussainAkhtarWahid是的,它的內容正是一個用特定名稱壓縮文件的zip文件。 – htyleo

回答

3

使用ZipInputStream內一個ByteArrayInputStream這是從一個字節數組創建

byte[] ba; 

InputStream is = new ByteArrayInputStream(ba); 
InputStream zis = new ZipInputStream(is); 

使用ZIS讀取非壓縮

0

ZipFile的實現要求它是一個文件。例如,可以使用存儲器映射。總的來說,假設檔案可能很大。

作爲@Perception提到,可以使用ZipInputStream按順序讀取流。第三方庫可能會取代ZipFile