`

删除jar包中的指定文件

    博客分类:
  • Java
阅读更多

如何删除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见附件

 

  • 大小: 10.6 KB
  • 大小: 7 KB
0
2
分享到:
评论

相关推荐

    jar包差异比较器.rar

    在jar包中,所有文件都被组织成一个逻辑文件系统,通过路径来访问。 "jar包差异比较器"的工作原理是,它会解析两个指定的jar包,并逐一对比其中的每一个类文件。这个过程可能涉及到字节码级别的比较,因为Java的....

    unzip jar包

    2. **Apache Commons IO**:这个库(对应`commons-io-2.4.jar`)则提供了许多基本的I/O操作功能,如文件复制、移动、删除,以及读写流等。在解压过程中,Apache Commons IO库可以用来读取和写入文件,处理输入和输出...

    如何引用 Hibernate 的Jar包

    - 下载Hibernate的发行版,其中包括所有必要的JAR文件。 - 将这些文件复制到项目的`lib`目录。 - 在IDE(如Eclipse或IntelliJ IDEA)中,右键点击项目,选择“Build Path” -&gt; "Configure Build Path" -&gt; ...

    IDEA对使用了第三方依赖jar包的非Maven项目打jar包的问题(图文详解)

    MANIFEST.MF文件是jar包中的一个特殊文件,用于描述jar包的元数据。在IDEA中,MANIFEST.MF文件需要配置Class-Path和Main-Class两个参数。Class-Path参数用于指定依赖jar包的路径,而Main-Class参数用于指定程序的...

    log4j配置和加载方法

    例如`log4j.appender.A2=org.apache.log4j.RollingFileAppender`,并且指定了文件路径、最大文件大小以及备份索引,以实现日志文件的滚动存储。 #### 日志级别与转换模式 日志级别包括`DEBUG`、`INFO`、`WARN`、`...

    springMVC文件上传所需jar包

    在文件上传中,`org.apache.commons.io`包中的`FileUtils`, `IOUtils`, `FileInputStream`, `FileOutputStream`等类被广泛使用,帮助处理临时文件的创建、读写和删除,以及文件流的转换和复制。 **Apache Commons ...

    Android 如何实现exclude aar包中的某个jar包

    排除 aar 包中的某个 jar 包是 Android 开发中常见的问题,本文提供了两种解决方法,分别是使用 exclude module 的方式和解压 aar 文件的方式。同时,本文还补充了在 Android 中导入多个 Module 时包冲突的解决办法...

    里面有两个jar包

    在覆盖到指定目录的过程中,同样需要考虑这个文件的处理方式,比如是否需要与JAR文件一起移动,或者它本身就是一份独立的文档,应该保留在解压后的目录结构中。 总结,处理包含JAR文件的压缩包,尤其是在涉及覆盖...

    SQL直连包 jar文件下载

    2. **引入jar文件**:将这些jar文件添加到Java项目的类路径中,这可以在IDE(如Eclipse, IntelliJ IDEA)中设置,也可以通过命令行参数(如`java -cp`)指定。 3. **编写Java代码**:使用JDBC(Java Database ...

    cas客户端jar包

    解决冲突的方法是删除或替换冲突的文件,确保CAS客户端jar包中的类库能正常工作。有时,你可能需要根据项目的具体需求来决定保留哪个版本的库,或者寻找可以同时兼容的更新版本。 在实际操作中,配置CAS客户端通常...

    Java连接SqlServer informix和mysql的 jar文件

    - 在运行Java应用时,使用`-cp`或`-classpath`命令行选项指定JAR文件的位置。 6. **处理数据库操作** 建立连接后,你可以使用Statement或PreparedStatement执行SQL查询、更新、插入和删除操作。使用ResultSet对象...

    apache-ant(jar包).zip

    当你在命令行中运行`ant`命令时,实际上是执行了这个jar包中的`org.apache.tools.ant.Main`类。这个主类解析`build.xml`文件,执行其中定义的任务,并按照依赖关系顺序执行。 `build.xml`文件是Ant的构建脚本,它...

    java-多线程下载器(支持断点续传、线程加减)包含源码和可运行jar包 第二版

    如果下载后无法直接运行,则查看电脑是否有F盘,如果没有,可修改jar包中的配置文件,将默认路径设置到其他盘,如C盘 说明: 1、这是myDownloader2.0自制下载器,在1.0版本的基础上做了修正和功能上的扩展; 2、该...

    mongodb数据库jar包

    这个jar包中包含的驱动程序允许Java开发者使用Java API与MongoDB通信。主要功能包括: 1. 连接管理:创建MongoClient实例,连接到MongoDB集群或单个服务器。 2. 数据库操作:选择或创建数据库,执行CRUD(创建、...

    javax.zip javax.jar 下载

    这些类允许开发者进行复杂的ZIP文件操作,如添加、删除、修改条目,以及读取和写入数据。 ### `javax.jar` 包 `javax.jar`包主要关注JAR(Java Archive)文件的处理,它包含用于创建、管理和操作JAR文件的工具。...

    jQuery_jar包

    在Java环境中,通过使用如Rhino或Nashorn这样的JavaScript引擎,可以运行jQuery_jar包中的代码。Rhino是Mozilla的一个开源JavaScript引擎,可以嵌入到Java应用程序中,而Nashorn是Java 8及更高版本内置的JavaScript...

    用Daemon实现windows系统下将jar包作为系统服务

    - 在这个过程中,你需要指定Java的安装路径,jar包的位置,以及jar包中的主类名。例如: ``` prunsrv install MyService --DisplayName="My Java Service" \ --Description="This is my custom Java service" \ ...

    DB2 V9.7 jar包

    DB2 V9.7的jar包中包含的类库主要用于提供DB2的连接、查询、事务管理、数据类型转换等功能,对于任何需要与DB2数据库进行通信的Java应用来说都是必不可少的。 要使用这个jar包,首先需要将其添加到项目的类路径...

    实现对jar包的混淆加密

    在jar包中,你可以将敏感代码封装在加密后的类中,然后在运行时使用密钥解密并加载这些类。请注意,这种方式需要妥善管理密钥,避免密钥泄露导致安全性降低。 此外,还可以考虑使用第三方加密库,如Bouncy Castle,...

Global site tag (gtag.js) - Google Analytics