读取几种配置文件
java中,常见几种配置文件有:.properties
,.,
.yml
,spring项目中对这些类型的配置文件通常有现成可用的封装,下面用手动解析的方式来操作这些类型配置文件;
首先idea创建项目:
- properties
在
application.properties
同级目录下创建config.,并写入简单配置信息:Test.java
中编写readFrom方法解析文件:
public static Map
readFrom result = new HashMap<>(); DocumentBuilderFactory factory = DocumentBuilderFactory.newInstance(); try { DocumentBuilder documentBuilder = factory.newDocumentBuilder(); Document document = documentBuilder.parse(new File("read-config/config. node(Node node) { Map result = new HashMap<>(); NodeList childNodes = node.getChildNodes(); for (int i = 0; i < childNodes.getLength(); i++) { Node item = childNodes.item(i); //元素节点-递归 if (item.getNodeType() == Node.ELEMENT_NODE) { result.putAll(node(item)); } //文本节点-添加map else if (item.getNodeType() == Node.TEXT_NODE && null != item.getNodeValue() && !"".equals(item.getNodeValue().trim()) && !"\n".equals(item.getNodeValue().trim())) { result.put(item.getParentNode().getNodeName(), item.getNodeValue()); } } return result;} 代码分析:
javax.包下的两个类:DocumentBuilderFactory
和DocumentBuilder
,通过documentBuilder.parse(new File("read-config/config.方法解析node(Node node)
递归Document对象各节点到Map对象。Document本身也是Node对象打印结果:
yaml
根目录下创建配置文件:application.properties
,和测试类Test.java

application.properties
配置文件中,设置几个基础配置项:

Test.java
中编写readFromProperties()
方法解析文件:
public static Map readFromProperties() { Map result = new HashMap<>(); Properties properties = new Properties(); try (FileInputStream inputStream = new FileInputStream("read-config/application.properties")) { properties.load(inputStream); } catch (Exception e) { e.printStackTrace(); } if (!properties.keySet().isEmpty()) { for (Object key : properties.keySet()) { result.put(key.toString(), properties.getProperty(key.toString())); } } return result;}
.properties
配置文件可以通过jdk中的java.util.Properties
类进行读取和解析,注意application.properties
文件路径。
测试:
在application.properties
同级目录下创建yaml配置文件config.yml
,并写入简单配置信息:

由于jdk没有提供yaml解析工具,需要手动导入解析库,这里用的库是:snakeyaml-1.29.jar

通过snakeyaml库,可以解析yaml配置文件为map或者对象。
该工具库下载地址参考:https://mvnrepository.com/artifact/org.yaml/snakeyaml
解析到Map
public static void readFromYml2Map() { try (FileReader reader = new FileReader("read-config/config.yml")) { Yaml yaml = new Yaml(); Object load = yaml.load(reader); if (load instanceof Map) { Map
没有评论:
发表评论