2011-01-05 100 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另一方面,如果这是而不是是您的应用程序的核心功能,找到并许可一个可以执行此操作的库(我怀疑您会找到这样做的开源实现)并继续前进。