如何删除jar包中的指定文件呢?
当然使用解压缩软件(rar,zip,7z)肯定没问题.但是我想自动化,图形界面的工具就无能为力了.
核心方法:
/*** * 删除jar包中的内容 * @param jarPath * @param fileName : "META-INF/BCKEY.DSA" * @throws IOException * @throws ArchiveException */ public static void deleteFileInJar(String jarPath,String fileName) throws IOException, ArchiveException{ List<String>fileNames=new ArrayList<String>(); if(!ValueWidget.isNullOrEmpty(fileName)){ fileNames.add(fileName);} deleteFileInJar(jarPath, fileNames); } /** * 删除jar包中的内容 * @param jarPath * @param fileNames : ["META-INF/BCKEY.DSA"],注意斜杠 * @throws IOException * @throws ArchiveException */ public static void deleteFileInJar(String jarPath,List<String>fileNames) throws IOException, ArchiveException{ List<ZipFileBean> zipFiles = CompressZipUtil .deCompressRecursionFileList(jarPath, "", true); List<ZipApkFile> zipApkFiles = extendZipFileBean(zipFiles,fileNames); CompressZipUtil.setPrint(false); File newFile=new File(jarPath + ".bak"); while(newFile.exists()){ //若bak文件存在,则循环修改名称,只到文件不存在 System.out.println("file exist:"+newFile.getAbsolutePath()); newFile=new File(jarPath + RandomUtils.getTimeRandom2()); } CompressZipUtil.persistenceZip(newFile, zipApkFiles); File jarFile=new File(jarPath); System.out.println("delete old jar:"+jarFile.getAbsolutePath()); boolean isSuccess=jarFile.delete(); if(!isSuccess){ System.out.println("删除失败:"+jarFile.getAbsolutePath()); }else{ System.out.println("modify name"); newFile.renameTo(jarFile); } }
使用说明:
比如我想删除jar(zip)包中的config\manual.properties
zip包结构:
main方法如下:
public static void main(String[] args) throws IOException, ArchiveException { String jarPath="D:\\bin\\config\\config.zip"; deleteFileInJar(jarPath, "config/manual.properties"/*"META-INF/BCKEY.DSA"*/); System.out.println("jarPath:"+jarPath); }
测试项目(ios_push_deleteBCKEY_DSA)见附件
依赖的jar见附件
相关推荐
在jar包中,所有文件都被组织成一个逻辑文件系统,通过路径来访问。 "jar包差异比较器"的工作原理是,它会解析两个指定的jar包,并逐一对比其中的每一个类文件。这个过程可能涉及到字节码级别的比较,因为Java的....
2. **Apache Commons IO**:这个库(对应`commons-io-2.4.jar`)则提供了许多基本的I/O操作功能,如文件复制、移动、删除,以及读写流等。在解压过程中,Apache Commons IO库可以用来读取和写入文件,处理输入和输出...
- 下载Hibernate的发行版,其中包括所有必要的JAR文件。 - 将这些文件复制到项目的`lib`目录。 - 在IDE(如Eclipse或IntelliJ IDEA)中,右键点击项目,选择“Build Path” -> "Configure Build Path" -> ...
MANIFEST.MF文件是jar包中的一个特殊文件,用于描述jar包的元数据。在IDEA中,MANIFEST.MF文件需要配置Class-Path和Main-Class两个参数。Class-Path参数用于指定依赖jar包的路径,而Main-Class参数用于指定程序的...
例如`log4j.appender.A2=org.apache.log4j.RollingFileAppender`,并且指定了文件路径、最大文件大小以及备份索引,以实现日志文件的滚动存储。 #### 日志级别与转换模式 日志级别包括`DEBUG`、`INFO`、`WARN`、`...
在文件上传中,`org.apache.commons.io`包中的`FileUtils`, `IOUtils`, `FileInputStream`, `FileOutputStream`等类被广泛使用,帮助处理临时文件的创建、读写和删除,以及文件流的转换和复制。 **Apache Commons ...
排除 aar 包中的某个 jar 包是 Android 开发中常见的问题,本文提供了两种解决方法,分别是使用 exclude module 的方式和解压 aar 文件的方式。同时,本文还补充了在 Android 中导入多个 Module 时包冲突的解决办法...
在覆盖到指定目录的过程中,同样需要考虑这个文件的处理方式,比如是否需要与JAR文件一起移动,或者它本身就是一份独立的文档,应该保留在解压后的目录结构中。 总结,处理包含JAR文件的压缩包,尤其是在涉及覆盖...
2. **引入jar文件**:将这些jar文件添加到Java项目的类路径中,这可以在IDE(如Eclipse, IntelliJ IDEA)中设置,也可以通过命令行参数(如`java -cp`)指定。 3. **编写Java代码**:使用JDBC(Java Database ...
解决冲突的方法是删除或替换冲突的文件,确保CAS客户端jar包中的类库能正常工作。有时,你可能需要根据项目的具体需求来决定保留哪个版本的库,或者寻找可以同时兼容的更新版本。 在实际操作中,配置CAS客户端通常...
- 在运行Java应用时,使用`-cp`或`-classpath`命令行选项指定JAR文件的位置。 6. **处理数据库操作** 建立连接后,你可以使用Statement或PreparedStatement执行SQL查询、更新、插入和删除操作。使用ResultSet对象...
当你在命令行中运行`ant`命令时,实际上是执行了这个jar包中的`org.apache.tools.ant.Main`类。这个主类解析`build.xml`文件,执行其中定义的任务,并按照依赖关系顺序执行。 `build.xml`文件是Ant的构建脚本,它...
如果下载后无法直接运行,则查看电脑是否有F盘,如果没有,可修改jar包中的配置文件,将默认路径设置到其他盘,如C盘 说明: 1、这是myDownloader2.0自制下载器,在1.0版本的基础上做了修正和功能上的扩展; 2、该...
这个jar包中包含的驱动程序允许Java开发者使用Java API与MongoDB通信。主要功能包括: 1. 连接管理:创建MongoClient实例,连接到MongoDB集群或单个服务器。 2. 数据库操作:选择或创建数据库,执行CRUD(创建、...
这些类允许开发者进行复杂的ZIP文件操作,如添加、删除、修改条目,以及读取和写入数据。 ### `javax.jar` 包 `javax.jar`包主要关注JAR(Java Archive)文件的处理,它包含用于创建、管理和操作JAR文件的工具。...
在Java环境中,通过使用如Rhino或Nashorn这样的JavaScript引擎,可以运行jQuery_jar包中的代码。Rhino是Mozilla的一个开源JavaScript引擎,可以嵌入到Java应用程序中,而Nashorn是Java 8及更高版本内置的JavaScript...
- 在这个过程中,你需要指定Java的安装路径,jar包的位置,以及jar包中的主类名。例如: ``` prunsrv install MyService --DisplayName="My Java Service" \ --Description="This is my custom Java service" \ ...
DB2 V9.7的jar包中包含的类库主要用于提供DB2的连接、查询、事务管理、数据类型转换等功能,对于任何需要与DB2数据库进行通信的Java应用来说都是必不可少的。 要使用这个jar包,首先需要将其添加到项目的类路径...
在jar包中,你可以将敏感代码封装在加密后的类中,然后在运行时使用密钥解密并加载这些类。请注意,这种方式需要妥善管理密钥,避免密钥泄露导致安全性降低。 此外,还可以考虑使用第三方加密库,如Bouncy Castle,...