有没有办法可以编辑 Zip 文件头并修改其值?我有一个 .zip 文件,里面已经有 5 个文件。我想编辑标题并修改内容。
我正在尝试修改最后的额外字段(请参考 wiki 的 zip 结构),
我可以修改任何语言的 zip 文件!任何帮助表示赞赏。
您不能使用 java.util.zip 包修改 zip 文件头。但是,如果您知道 zip 标头结构,您可以使用 java.io.RandomAccessFile 移动到所需字段并使用适当的方法(例如 writeInt 或 writeShort)来更改其值。
您需要为此编写自己的代码,但它应该相对简单。由于听起来需要在标题中插入额外的数据,因此您不能像另一个答案中所建议的那样简单地写入现有的 zip 文件。读取 zip 文件并编写一个新文件。
首先查找并读取中心目录(结束目录指向它)。然后使用它来了解本地和中央标头在 zip 文件中的位置。您需要这样做,因为某些 zip 文件不能在不解压缩数据的情况下简单地按顺序读取。对于这个应用程序,没有必要浪费时间解压缩数据。
然后使用中央目录中本地标头的位置顺序读取 zip 文件,将内容复制到新的 zip 文件,但通过更改额外字段长度的长度并插入额外数据来插入额外字段。跟踪本地标头的新偏移量。当您到达中央目录时,您将需要更新本地标头的偏移量,并在那里再次插入额外的数据。最后,您需要将偏移量更新到最终目录中的中央目录。