Java / C如何修改zip文件头?

时间:2013-09-15 07:11:29

标签: java android c zip gzip

有没有办法可以编辑Zip文件头并修改其值?我有一个包含5个文件的.zip文件。我想编辑标题并修改内容。

我想在最后修改额外的字段(请从wiki中修改zip结构),

enter image description here

我可以修改任何语言的zip文件!感谢任何帮助。

2 个答案:

答案 0 :(得分:0)

您无法使用java.util.zip包修改zip文件头。但是如果您知道zip头结构,则可以使用java.io.RandomAccessFile移动到必需字段并使用适当的方法(例如writeInt或writeShort)来更改其值。

答案 1 :(得分:0)

您需要为此推送自己的代码,但它应该相对简单。由于听起来需要在标题中插入额外的数据,因此您不能像其他答案中所建议的那样简单地写入现有的zip文件。阅读zip文件并写一个新文件。

首先查找并读取中心目录(结束目录指向它)。然后使用它来知道zip文件中本地和中央标题的位置。您需要这样做,因为在不解压缩数据的情况下,无法简单地按顺序读取某些zip文件。对于这个应用程序,浪费时间解压缩数据毫无意义。

然后使用中央目录中本地标题的位置顺序读取zip文件,将内容复制到新的zip文件,但通过更改额外字段长度的长度并插入额外数据来插入额外字段。跟踪本地标头的新偏移量。当您到达中央目录时,您需要更新本地标头的偏移量,并在那里再次插入额外的数据。最后,您需要将偏移更新到结束目录中的中心目录。

使用zip file specification from PKWare