天天看點

Java 高效壓縮zip

以前遇到檔案壓縮的功能是都直接從網上找一個,随便測試一下能用就行了。既不關心效率也沒有好好的測一下是否支援内嵌檔案夾的壓縮。

現在仔細測試才發現網上好多都不支援内嵌檔案夾的壓縮。 支援的不是有問題就是速度比較慢。

架構裡jar包裡的類諸如IOUtils,FileUtils裡沒有提供壓縮的方法。連commons-compress.jar裡都沒有現成的。

我決定自己寫一個。真寫的時候發現不是那麼容易。目标是 給定一個檔案夾路徑和一個輸出路徑,将給定檔案夾裡的所有東西都壓縮到zip裡。

在commons-compress的文檔裡發現有一個支援多線程壓縮的類 ParallelScatterZipCreator。我決定試一試。

文檔裡也沒有給出帶檔案夾壓縮的demo。沒辦法隻能仔細閱

讀這個demo從api裡找線索了。

仔細摸索後,代碼如下:

以解壓後的eclipse檔案為例,用時:4624 ms。比較了一下網上其他的方法,快了2倍多。這結果還算滿意。 代碼水準有限,隻能到這兒了。如果有更精簡的代碼,歡迎指教。

繼續閱讀