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