gpt4 book ai didi

java - 为什么无法从 jar 文件中删除条目?

转载 作者:搜寻专家 更新时间:2023-10-31 19:31:23 25 4
gpt4 key购买 nike

可以使用 jar 工具向 jar 文件添加新条目。
可以使用 jar 工具修改 jar 文件中的一些条目。
但无法从 jar 文件中删除某些条目。
为什么?

最佳答案

没有人真正回答最初的 Why? 问题,答案只包含如何继续做的提示。

为什么?

Jar 和 zip 文件是压缩文件,具有一组通常称为条目的文件或目录。 jar/zip 文件的结构/格式是条目的顺序枚举(除了 zip 文件格式 header )。

每个条目都有一个标题,其中包含有关条目的信息,例如它的名称、类型、字节长度(以及其他)。

现在使用这个顺序条目列表,您将如何从文件中间删除一个条目?它会在文件中间留下一个“洞”。删除条目的唯一方法(无需在没有可删除条目的情况下重新创建存档)将需要从条目之后开始复制 zip 文件内容到当前(可删除)条目的开头,并截断 zip 文件长度乘以删除条目的长度。

想象一下,如果您有一个数十或数百 MB 的存档,这意味着什么?如果要删除开头的条目,则必须将文件的几乎全部内容复制几个字节(或千字节),以免在文件中留下空白。

这就是为什么。

这种结构允许很容易地添加新条目,因为它们可以很容易地附加到文件的末尾,但是不能有效地执行(条目)删除。

关于java - 为什么无法从 jar 文件中删除条目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3047081/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com