public final class JarUtil extends Object
| 构造器和说明 |
|---|
JarUtil() |
| 限定符和类型 | 方法和说明 |
|---|---|
static String |
doJarWar(String srcDir,
String targetJarOrWar) |
static String |
doJarWar(String srcDir,
String targetJarOrWar,
FileOrderSupport fileOrderSupport)
把目录压缩成jar(or war)
|
static byte[] |
getFileFromZip(File zip,
String fileName)
从(zip/jar/war)压缩文件中获取一个文件的字节
注:jar其实也是zip。
|
static String |
getFileFromZip(File zip,
String fileName,
File targetFile)
从(zip/jar)压缩文件中获取文件
注:jar其实也是zip。
|
static String |
getRootPath(String projectPath)
获取当前类对应的其所在的classes目录全路径名(或其所在jar包/war包文件全路径名)
|
static void |
guarantyDirExist(File dir)
保证目录存在
|
static boolean |
isJarOrWar(String originJarOrWar)
判断originJarOrWar是jar文件还是war文件
|
static Map<String,Pair<byte[],byte[]>> |
rewriteZipEntry(ZipFile zipFile,
Map<String,byte[]> replacerMap)
修改zip文件(.java、.war文件)中的条目
|
static <T extends Collection<String>> |
unJarWar(String jarWarPath,
String targetDir)
解压jar(or war)至指定的目录
|
static <T extends Collection<String>> |
unJarWar(String jarWarPath,
String targetDir,
boolean delOldTargetDirIfAlreadyExist,
T entryNamePrefixes)
解压jar(or war)至指定的目录
|
public static String doJarWar(String srcDir, String targetJarOrWar, FileOrderSupport fileOrderSupport)
srcDir - 需要打包的目录(如 /tmp/demo-1.0.0/)targetJarOrWar - 打包出的jar/war文件路径(如 /tmp/abc.jar)fileOrderSupport - 文件排序序号提供者public static <T extends Collection<String>> List<String> unJarWar(String jarWarPath, String targetDir)
public static <T extends Collection<String>> List<String> unJarWar(String jarWarPath, String targetDir, boolean delOldTargetDirIfAlreadyExist, T entryNamePrefixes)
jarWarPath - 待解压的jar(or war)文件targetDir - 解压后文件放置的文件夹delOldTargetDirIfAlreadyExist - 若targetDir已存在,是否先将原来的targetDir进行删除entryNamePrefixes - 只有当entryName为指定的前缀时,才对该entry进行解压(若为null或者长度为0, 则解压所有文件) 如: ["BOOT-INF/classes/",
"BOOT-INF/classes/com/example/ssm/author/JustryDeng.class"] public static void guarantyDirExist(File dir)
dir - 目录public static String getFileFromZip(File zip, String fileName, File targetFile)
注:jar其实也是zip。
示例
String path = JarUtil.getFileFromJar("/tmp/demo.jar", "META-INF/services/com.niantou.filter.HttpExtFilter", new
File("/root/HttpExtFilter.txt"));
zip - 压缩文件fileName - 压缩文件的(相对压缩文件的root的)相对路径文件名targetFile - 获取出来的目标文件public static byte[] getFileFromZip(File zip, String fileName)
注:jar其实也是zip。 war虽然不是zip,但是也是可以使用压缩/解压zip的方式来进行压缩解压的。
示例
byte[] bytes = JarUtil.getFileFromJar("/tmp/demo.jar", "META-INF/services/com.niantou.filter.HttpExtFilter");
zip - 压缩文件fileName - 压缩文件的(相对压缩文件的root的)相对路径文件名public static Map<String,Pair<byte[],byte[]>> rewriteZipEntry(ZipFile zipFile, Map<String,byte[]> replacerMap) throws IOException
zipFile - 要修改的zip文件(.java、.war文件)replacerMap - 替换器(k-ZipFile中,要被替换的ZipEntry的相对路径,如:BOOT-INF/classes/application.yml; V-要替换成的内容)IOExceptionpublic static boolean isJarOrWar(String originJarOrWar) throws IllegalArgumentException
originJarOrWar - jar或者war的文件名(或全路径文件名)IllegalArgumentException - 当originJarOrWar既不是jar文件又不是war文件时抛出Copyright © 2023. All rights reserved.