背景:
在开发过程中,经常会碰到需要用到读取配置文件内容从而达到目的,故在此列几种我自己用到过的读取方法,记录一下,也方便大家查阅方便。
情景:
在使用过程中看情况使用,如果是springboot项目的话,最好直接用方法二,没有springboot可以用方法1结合方法3,将方法一中的
String str = "E:/ssl/ssl.properties";
in = new FileInputStream(str);
替换为
in = EppTransportTcpTlsImpl.class.getClassLoader().getResourceAsStream("ssl.properties");
就不用担心项目移动导致路径变化,也能更方便的发布到服务器上而不用每次都要修改路径。
1.通常读取方法:
需求:通过传入一个字符串,判断调用配置文件里面的哪些配置,并返回对应的map。
/**
* 这个类提供将配置文件里面的属性根据传入的值提取到对应map里面的方法
* @author Wzy525110
*/
public class PropertiesToMap {
/**
* 这个方法能将配置文件里面的属性根据传入的值提取到对应map里面
* @param str1
* @return
*/
public Map<String,String> getProp(String str1) throws Exception{
Properties pro = new Properties();
//初始化
FileInputStream in = null;
//创建一个map,key存放配置文件属性的属性名,value存放配置文件属性的属性值
Map<String,String> testMap = new HashMap<String, String>();
try {
//文件的路径及文件名
// String str = "/usr/local/java/ssl.properties";
String str = "E:/ssl/ssl.properties";
in = new FileInputStream(str);
//读取文件
pro.load(in);
//把文件里面的key(属性名)拿出来
Iterator<String> it=pro.stringPropertyNames().iterator();
//根据key去遍历
while(it.hasNext()){
//如果还有,就给这个key一个值
String key=it.next();
//判断这个值是否包含传进来的字符串的值,包含为1,不包含为-1
if (key.indexOf(str1) != -1){
//找到这个key对应的属性
String value=pro.getProperty(key);
//把遍历的结果放入map里面
testMap.put(key,value);}
}
} catch (FileNotFoundException e) {
throw new FileNotFoundException("找不到文件FileNotFoundException,"+this.getClass().getName());
} catch (IOException e) {
throw new IOException("IOException,"+this.getClass().getName());
}finally {
if(in !=null){
try {
//最后关闭读取
in.close();