前言
实际项目中可能会有需要读取类路径下面的配置文件中的内容的需求,由于springboot项目打包的是jar包,通过文件读取获取流的方式开发的时候没有问题,但是上到linux服务器上就有问题了,对于这个问题记录一下处理的方式
类加载器的方式
通过类加载器读取文件流,类加载器可以读取jar包中的编译后的class文件,当然也是可以读取jar包中的文件流了
比如要读取resources目录下common/tianyanchasearch.json这个文件
String resourcePath = "common/tianyanchasearch.json";
String content = FileUtil.getStringFromInputStream(resourcePath);
return GlobalResult.succeed(JSON.parseObject(content));
/**
* 从输入流中获取文件内容字符串
* @param resourcePath
* @return
public static String getStringFromInputStream(String resourcePath) {
StringBuilder jsonString = new StringBuilder();
BufferedReader bufferedReader = null;
try {
ClassPathResource classPathResource = new ClassPathResource(resourcePath);
InputStream inputStream = classPathResource.getStream();
bufferedReader = new BufferedReader(new InputStreamReader(inputStream,StandardCharsets.UTF_8));
char[] chars = new char[8192];
int length;
while ((length = bufferedReader.read(chars)) != -1) {
String temp = new String(chars, 0, length);
jsonString.append(temp);
} catch (IOException e) {
System.out.println("=====获取数据异常=====" + e);
} finally {
if (null != bufferedReader) {
try {
bufferedReader.close();
} catch (IOException ex) {
System.out.println("=======获取数据时,关闭流异常=======" + ex);
return jsonString.toString();