我正在做有关操作 JAR 文件的作业。我可以删除 JAR 文件中的文件,但文件夹仍在其中。
如何删除它们?
zip -d file.jar unwanted_folder/
zip -d file.jar unwanted_folder/\*
我没有代码来做这件事,但基本的想法很简单,应该以同样的方式翻译成几乎任何语言。jar 文件布局只是代表文件的一系列块(一个标头后面是压缩数据),最后是一个包含所有元数据的中央目录。这是过程:
在文件中向前扫描,直到找到要删除的第一个文件。在文件中向前扫描,直到找到您不想删除的第一个文件或点击中央目录。在文件中向前扫描,直到找到要删除的第一个文件或点击中央目录。将您在步骤 3 中找到的所有数据复制回您在步骤 2 中跳过的数据,直到您找到要删除的另一个文件或您点击中央目录。除非您已点击中央目录,否则请转到第 2 步。将中央目录复制到您停止复制的位置,省略已删除文件的条目并更改偏移量以反映您移动每个文件的程度。有关 ZIP 文件结构的所有详细信息,请参见http://en.wikipedia.org/wiki/ZIP_%28file_format%29。
正如 bestsss 建议的那样,您可能希望将其复制到另一个文件中,以防止在发生故障时丢失数据。