如何在 java 中以务实的方式从 jar 中删除特定的文件/文件夹。
我有一个 jar ABC.jar 包含文件、文件夹和另一个 jars 说 child.jar。在 child.jar 下我想删除一个特定的文件。我能怎么做?这样我的 ABC.jar 结构保持不变。
任何帮助将不胜感激。
提前致谢。
Jar/zip 文件不可编辑。您无法从 jar/zip 文件中删除条目。
您可以做的是“重新创建”jar 文件,如下所示:启动一个新的 jar 文件,迭代当前 jar 文件的条目,并将这些条目添加到您不想删除的新 jar 文件中。
理论上,可以删除这样的条目(但标准 Java 库不适合这样做,即ZipFile, ZipInputStream, JarFile,JarInputStream类):
jar/zip 文件中的条目是连续的。每个条目都有一个标题,其中包含有关该条目的信息(可能是文件或文件夹条目)。该标头还包含条目的字节长度。因此,您可以按顺序迭代这些条目,如果您遇到要删除的条目(并且您从其标题中知道其大小),您可以将文件的剩余部分(该条目之后的内容)复制到该条目的开头当前条目(显然文件大小应该被当前/删除条目的长度截断)。
或者您的其他选择包括不通过 Java 执行此操作,而是使用命令本身等外部工具zip -d。
| 归档时间: |
|
| 查看次数: |
3979 次 |
| 最近记录: |