注:只修改文件,其他会被清空
package com.mtpc.admin.util;
import java.io.*;
import java.util.*;
import java.util.jar.JarEntry;
import java.util.jar.JarFile;
import java.util.jar.JarOutputStream;
public class JarUtil {
/**
* jarPath: jar包所在路径
* jarFilePath: jar中想要修改文件所在的路径
* map: 要修改的内容
*/
public static void main(String agrs[]) throws IOException {
JarUtil jarUtil=new JarUtil();
Map map=new HashMap();
map.put("url","moTooling111");
map.put("username","cl");
map.put("password","321123");
jarUtil.change("H:\\mtpcbootPrivate\\target\\mtpc.jar","H:\\mtpcbootPrivate\\target\\mtpc.jar\\BOOT-INF\\classes\\application.yml",map);
}
/**
*
* @param jarPath
* @param jarFilePath
* @param map 修改的内容
* @return
* @throws IOException
*/
public JarUtil change(String jarPath, String jarFilePath, Map map)
throws IOException {
if (jarPath != null && jarFilePath != null && map != null) {
File file = new File(jarPath);
JarFile jarFile = new JarFile(file);// 通过jar包的路径 创建 jar包实例
JarEntry entry = jarFile
.getJarEntry("BOOT-INF/classes/application.yml");// 通过某个文件在jar包中的位置来获取这个文件
InputStream input = jarFile.getInputStream(entry); // 创建该文件输入流
List<JarEntry> lists = new LinkedList<>();
for (Enumeration<JarEntry> entrys = jarFile.entries(); entrys.hasMoreElements();) {
JarEntry jarEntry = entrys.nextEleme