欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

删除jar包中的指定文件 博客分类: Java compress解压缩删除jar包文件删除zip包文件删除压缩包文件 

程序员文章站 2024-03-24 21:17:46
...

如何删除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包结构:
删除jar包中的指定文件
            
    
    博客分类: Java compress解压缩删除jar包文件删除zip包文件删除压缩包文件 
 
删除jar包中的指定文件
            
    
    博客分类: Java compress解压缩删除jar包文件删除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包中的指定文件
            
    
    博客分类: Java compress解压缩删除jar包文件删除zip包文件删除压缩包文件 
  • 大小: 10.6 KB
  • 删除jar包中的指定文件
            
    
    博客分类: Java compress解压缩删除jar包文件删除zip包文件删除压缩包文件 
  • 大小: 7 KB