在开发Elasticsearch的应用过程中,需要读取索引相关的JSON Settings、MAppings设置,将JSON文档存放到项目的resources 目录,然后读取并调用Elasticsearch API 执行。
<dependency>
<groupId>com.alibaba</groupId>
<artifactId>fastjson</artifactId>
<version>1.2.56</version>
</dependency>
package com.fanxb.esdemo.util;
import JAVA.io.*;
public class JsonUtil {
/**
* 读取json文件,返回json串
* @param fileName
* @return
*/
public static String readJsonFile(String fileName) {
String jsonStr = "";
try {
File jsonFile = new File(fileName);
Reader reader = new InputStreamReader(new FileInputStream(jsonFile),"utf-8");
int ch = 0;
StringBuffer sb = new StringBuffer();
while ((ch = reader.read()) != -1) {
sb.append((char) ch);
}
reader.close();
jsonStr = sb.toString();
return jsonStr;
} catch (IOException e) {
e.printStackTrace();
return null;
}
}
}
getResource(""):这个方法可以用于查看当前目录。
this.getClass().getResource("")和this.getClass().getClassloader().getResource("") 区别?
第一个是类路径下(即 class 根目录);
第二个目录是 class目录里面当前类的包路径(package);
参考下图,推荐写法:
this.getClass().getClassLoader().getResource("文件名.文件类型")
单元测试方法,具体代码如下。
@Test
public void readJsonFile(){
String path = this.getClass().getClassLoader().getResource("order_template.json").getPath();
String jsonFile = JsonUtil.readJsonFile(path);
System.out.println(jsonFile);
}
order_template.json文件放入resources资源目录中,如下是输出结果。