import lombok.extern.slf4j.Slf4j;
import org.springframework.core.io.Resource;
import org.springframework.core.io.support.PathMatchingResourcePatternResolver;
import org.springframework.core.io.support.ResourcePatternResolver;
import java.io.BufferedReader;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.net.URL;
import java.nio.charset.StandardCharsets;
/**
* 打印发布包中【version文件】里面的版本信息
*
* @author jiuyan
* @since 2023/11/28
*/
@Slf4j
public class VersionTools {
/**
* 使用springboot封装的classpath查找工具。
* * @param path
*/
public static void versionInfoPrint_spring(String path) {
if (path == null || path.isEmpty()) {
path = "version";
}
try {
ResourcePatternResolver resourcePatternResolver = new PathMatchingResourcePatternResolver();
Resource[] resources = resourcePatternResolver.getResources("classpath*:" + path);
for (Resource resource : resources) {
System.out.println("----------------------------------");
//获取文件名
//System.out.println(resource.getFilename());
System.out.println("START---version file: "+resource.getURL());
BufferedReader bfreader = new BufferedReader(new InputStreamReader(resource.getInputStream(), StandardCharsets.UTF_8));
//打印前30行
//bfreader.lines().limit(20).forEach(System.out::println);
bfreader.lines().limit(20).forEach(log::info);
bfreader.close();
}
System.out.println("START---versionInfo: 版本号信息获取结束");
} catch (Exception e) {
e.printStackTrace();
System.out.println("START---versionInfo: 版本号信息获取异常");
}
}
/**
* 使用java的classloader查找包内文件
* @param path
*/
public static void versionInfoPrint(String path) {
if (path == null || path.isEmpty()) {
path = "version";
}
try {
ClassLoader classLoader = VersionTools.class.getClassLoader();
System.out.println(classLoader.toString());
URL resource = classLoader.getResource(path);
if (resource == null) {
System.out.println("START---versionInfo: 版本号文件获取为空");
return;
}
System.out.println("START---version file: "+resource);
InputStream inputStream = resource.openStream();
BufferedReader bfreader = new BufferedReader(new InputStreamReader(inputStream, StandardCharsets.UTF_8));
//打印前30行
//bfreader.lines().limit(20).forEach(System.out::println);
bfreader.lines().limit(20).forEach(log::info);
bfreader.close();
System.out.println("START---versionInfo: 版本号信息获取结束");
} catch (Exception e) {
e.printStackTrace();
System.out.println("START---versionInfo: 版本号信息获取异常");
}
}
}
参考文章:
【SpringBoot】三种方式,教你读取 jar 包中的 resources 目录下的文件_jar包获取resource下的文件路径-优快云博客