我有一個文件,以.zip格式提供,我想將其讀入內存。壓縮大約50 MB,解壓縮大約700 MB。現在我想知道如果我應該先解壓縮文件然後再讀取它,或者它沒有任何區別,我可以直接從zip文件中讀取數據。將壓縮文件和解壓縮文件讀取到內存中
在正常文件的情況下,我使用圍繞FileInputStream
的InputStreamReader
。
對於zip文件,我使用java.util.ZipFile
從ZipEntry
獲取InputStream
,然後再圍繞它包裝InputStreamReader
。
所以最後我在兩種情況下都與InputStreamReader
一起工作。
我試圖測試它,但本地我無法讀取這樣一個大文件而不會耗盡內存。在進程運行的服務器上有更多的進程干擾,所以我無法確定是否有任何區別。
有沒有人知道,如果其中一個選項使用的內存明顯多於另一個,那麼它只是一個設計問題,使用哪種方式?
問候, 烏韋
你對解壓縮數據做什麼?該zipfile有多少條目? – wero
這是您自己機器上的一次性工作,而不是生產工作上的常規工作嗎? –
我們確實需要知道您需要如何處理數據。您可以在讀取時對其進行過濾,只需要在內存中保存一個小緩衝區和結果 - 或者您可以找到在磁盤上處理它的方法。應始終避免把它全部留在記憶中 - 除非這是一次性的。 –