java yml文件_JAVA读取yml配置文件指定key下的所有内容

该博客介绍了如何在Java中使用snakeyaml库读取YML配置文件,并提供了读取YML文件的工具类YmlUtils,包括获取指定key下的所有内容、遍历YML文件等方法。此外,还提到了SpringBoot应用中读取YML配置的场景。
摘要由CSDN通过智能技术生成

先引入需要的依赖

org.yaml

snakeyaml

1.23

读取YML文件工具类的代码

import org.apache.commons.lang3.StringUtils;

import org.slf4j.Logger;

import org.slf4j.LoggerFactory;

import org.springframework.util.ResourceUtils;

import org.yaml.snakeyaml.Yaml;

import java.io.*;

import java.util.HashMap;

import java.util.Map;

import java.util.Set;

/**

* @author hunmeng

* @create 2020-01-10 20:34

*/

public class YmlUtils {

private static final Logger LOGGER = LoggerFactory.getLogger(YmlUtils.class);

private static String bootstrap_file = "classpath:application-test.yml";

private static Map result = new HashMap<>();

/**

* 根据文件名获取yml的文件内容

* @param filePath

* @param keys 第一个参数对应第一个key,第二个参数对应第二个key 比如spring.name下的所有 就是两个参数、

* getYmlByFileName(bootstrap_file,"spring", "name");

* @return

*/

public static Map getYmlByFileName(String filePath, String... keys) {

result = new HashMap<>();

if(filePath == null) filePath = bootstrap_file;

InputStream in = null;

try {

File file = ResourceUtils.getFile(filePath);

in = new BufferedInputStream(new FileInputStream(file));

Yaml props = new Yaml();

Object obj = props.loadAs(in,Map.class);

Map param = (Map) obj;

for(Map.Entry entry:param.entrySet()){

String key = entry.getKey();

Object val = entry.getValue();

if (keys.length != 0 && !keys[0].equals(key)){

continue;

}

if(val instanceof Map){

forEachYaml(key,(Map) val, 1, keys);

}else{

result.put(key, val.toString());

}

}

return result;

} catch (FileNotFoundException e) {

LOGGER.error(e.getMessage(),e);

}finally {

if (in != null){

try {

in.close();

} catch (IOException e) {

LOGGER.error(e.getMessage(),e);

}

}

}

return null;

}

/**

* 根据key获取值

* @param key

* @return

*/

public static String getValue(String key) throws FileNotFoundException {

Map map = getYmlByFileName(null);

if(map==null)return null;

return map.get(key);

}

/**

* 遍历yml文件,获取map集合

* @param key_str

* @param obj

* @param i

* @param keys

* @return

*/

public static Map forEachYaml(String key_str,Map obj, int i, String... keys){

for(Map.Entry entry:obj.entrySet()){

String key = entry.getKey();

Object val = entry.getValue();

if (keys.length > i && !keys[i].equals(key)){

continue;

}

String str_new = "";

if(StringUtils.isNotEmpty(key_str)){

str_new = key_str+ "."+key;

}else{

str_new = key;

}

if(val instanceof Map){

forEachYaml(str_new,(Map) val, ++i, keys);

i--;

}else{

result.put(str_new,val.toString());

}

}

return result;

}

/**

* 获取bootstrap.yml的name

* @return

*/

public static String getApplicationName() throws FileNotFoundException {

return getYmlByFileName(bootstrap_file).get("server.port");

}

/**

* 获取bootstrap.yml的name

* @return

*/

public static String getApplicationName1() throws FileNotFoundException {

String name = getYmlByFileName(bootstrap_file).get("spring.application.name");

return name + "center";

}

public static void main(String[] args) throws FileNotFoundException {

Map ymlByFileName = getYmlByFileName(bootstrap_file,"spring");

Set> entries = ymlByFileName.entrySet();

for (Map.Entry entry : entries) {

System.out.println(entry.getKey()+"==="+entry.getValue());

}

System.out.println(getApplicationName());

}

}

SpringBoot中如何优雅的读取yml配置文件?

YAML是一种简洁的非标记语言,以数据为中心,使用空白.缩进.分行组织数据,从而使得表示更加简洁易读.本文介绍下YAML的语法和SpringBoot读取该类型配置文件的过程. 本文目录 一.YAML基 ...

java读取properties配置文件总结

java读取properties配置文件总结 在日常项目开发和学习中,我们不免会经常用到.propeties配置文件,例如数据库c3p0连接池的配置等.而我们经常读取配置文件的方法有以下两种: (1) ...

C&num;读取xml文件指定节点下的值

#region 读取xml文件指定节点下的值 XmlDocument xmlDoc = new XmlDocument(); xmlDoc.LoadXml(result); XmlNode root ...

java操作office和pdf文件java读取word,excel和pdf文档内容

在平常应用程序中,对office和pdf文档进行读取数据是比较常见的功能,尤其在很多web应用程序中.所以今天我们就简单来看一下Java对word.excel.pdf文件的读取.本篇博客只是讲解简单应 ...

java读取properties配置文件信息

一.Java Properties类 Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件,各种语言都有自己所支持的配置文件,配置 ...

Java 读取 &period;properties 配置文件的几种方式

Java 开发中,需要将一些易变的配置参数放置再 XML 配置文件或者 properties 配置文件中.然而 XML 配置文件需要通过 DOM 或 SAX 方式解析,而读取 properties 配 ...

java读取&period;properties配置文件的几种方法

读取.properties配置文件在实际的开发中使用的很多,总结了一下,有以下几种方法(仅仅是我知道的):一.通过jdk提供的java.util.Properties类.此类继承自java.util. ...

Java 读取 &period;properties 配置文件

java 开发中,经常要读取 properties 配置文件,下面介绍几种读取方式: 1.基于 InputStream 读取配置文件 该方式的优点在于可以读取任意路径下的配置文件 Properties ...

【转载】java读取&period;properties配置文件的几种方法

读取.properties配置文件在实际的开发中使用的很多,总结了一下,有以下几种方法(仅仅是我知道的):一.通过jdk提供的java.util.Properties类.此类继承自java.util. ...

随机推荐

Visual Studio安装卸载模板

Visual Studio中有两种类型的模板:项目模板和项模板 一.已安装模板: 默认情况下,与产品一起安装的模板位于以下位置: ①\\Common ...

PHP使用COM 获取RTF内容

1. 需要在APP服务器上安装Office 2. 可能需要创建文件夹:Desktop C:\Windows\SysWOW64\config\systemprofile\Desktop 3. 可能需要设 ...

看来要学 Asp&period;Net 了

C#大部分招聘都要这个:对个人用而言,太庞大了,所以对其的感观一直不咋,也就没想学了.

【制作镜像Win&ast;】系统配置

向livibirt.xml插入Line 6-13所示代码,即加入两个virtio-serial设备:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值