2011-01-05 56 views
3

有沒有任何方式修改一個zip在android上,而不必提取其內容?我只需要添加/刪除約10個文件。如果我不得不提取拉鍊,它可能會高達200MB。Android修改Zip文件

+0

+1,有趣的問題;我懷疑android使用一些標準的java庫來修改壓縮文件,所以你可能想在這個網站上搜索。 – jcollum 2011-01-05 22:41:31

+0

@jcollum:我還沒有任何代碼,但是我正在等待,看看我是否需要第三方代碼或java.util.zip就足夠了。 – nebkat 2011-01-05 22:48:39

+0

java.util.zip不會給你你需要的東西。從本地代碼你可以使用像build/tools/zipalign/ZipFile.cpp這樣的東西,它可以刪除條目並添加壓縮數據而不用重新壓縮它(例如,將壓縮文件添加到zip壓縮文件中),但這不是公共API的一部分,所以我真的不能推薦它。 – fadden 2011-01-06 00:15:52

回答

0

我不認爲你會發現一個簡單的方法與內置的圖書館這樣做。如果這是你的應用程序的核心功能,你可能想自己編寫(解析zip並不那麼難)。

下面是一般的方法:開始閱讀壓縮文件,確定第一個壓縮文件頭 - 當您找到要排除的文件頭時,請繼續閱讀下一個條目 - 否則寫出來。跟蹤每個zipentry的輸出偏移量。然後在文件末尾編寫你自己的郵件預告片。

zip格式是明確定義的(並且不是特別複雜 - 特別是b/c,你不必使用flate或deflate或加密或類似的東西),你試圖做的是直接的:http://www.pkware.com/documents/casestudies/APPNOTE.TXT另一方面,如果這是而不是是您的應用程序的核心功能,找到並許可一個可以執行此操作的庫(我懷疑您會找到這樣做的開源實現)並繼續前進。