IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> 解析配置文件 -> 正文阅读

[Java知识库]解析配置文件

我们常见的配置文件:

????????properties

????????josn

????????yaml

????????hocon

当然,我们web开发中使用的web.xml文件也是常使用的配置文件。

在Java中我们想要使用配置文件则需要用代码将文件解析出来。

在Java类中解析配置文件:???????

?注意:该方式只能读取类路径下的配置文件,有局限但是如果配置文件在类路径下比较方便。

1     Properties p = new Properties();
2     // 使用ClassLoader加载properties配置文件生成对应的输入流
3     InputStream in = PropertiesMain.class.getClassLoader().getResourceAsStream("config/config.properties");
4     // 使用properties对象加载输入流
5     p.load(in);
6     //获取key对应的value值
7     p.getProperty(String key);

注意:该方式的优点在于可以读取任意路径下的配置文件

1     Properties p = new Properties();
2     // 使用InPutStream流读取properties文件
3     BufferedReader bufferedReader = new BufferedReader(new FileReader("E:/config.properties"));
4     p.load(bufferedReader);
5     // 获取key对应的value值
6     p.getProperty(String key);

?此处代码使用的是java.util.ResourceBundle类直接解析资源,更为方便:

//使用java.util.ResourceBundle类来直接读取  路径名必须是包的全名加文件名,不需要文件的后缀名
		ResourceBundle b = ResourceBundle.getBundle("com/comfig/jdbc");
		//直接使用ResourceBundle工具类的getString方法就能得到资源信息
		String name = b.getString("jdbc.url");
		System.out.println(name);

代码输出:

jdbc:mysql://localhost:3306/test
?

java中并没有直接定义出解析的?类或者方法,我们就得借助外界的工具包:

解析xml文件的步骤:

package com.test;

import java.io.InputStream;

import java.util.List;

import javax.lang.model.element.Element;

?

import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Node;
import org.dom4j.io.SAXReader;
import org.dom4j.tree.DefaultElement;

public class Test {
? ? ? ? ? public static void main(String[] args) throws DocumentException {
? ? ? ? ?? ? ?//找到配置文件,得到输入流
?? ??? ??? ? InputStream as = Test.class.getResourceAsStream("student.xml");
?? ??? ??? ? //导入jar包,实例化jar包SAXReader对象
?? ??? ??? ? SAXReader sa = new SAXReader();
?? ??? ??? ? //调用SAXReader对象的read方法参数为输入流 返回最高节点
?? ??? ??? ? Document d = sa.read(as);
?? ??? ??? ? //使用节点的selextNodes方法查找需要查找的节点 返回节点集合
?? ??? ??? ? List<DefaultElement> ln = d.selectNodes("students/student");
?? ??? ??? ?for (DefaultElement e : ln) {//遍历该集合
? ? ? ? ? ? ? ? //asXML方法使节点看起来更清晰
?? ??? ??? ??? ?System.out.println(e.asXML());
?? ??? ??? ??? ?//得到该节点的属性个数
?? ??? ??? ??? ?System.out.println(e.attributeCount());
?? ??? ??? ??? ?//得到该节点的class属性值
?? ??? ??? ??? ?System.out.println(e.attributeValue("class"));
?? ??? ??? ??? ?//得到该节点的name子节点//返回单个节点Note ?得到该节点的内容
?? ??? ??? ??? ?System.out.println(e.selectSingleNode("name").getStringValue());
?? ??? ??? ?}
?? ??? ??? ?//得到是T264班的学生的节点
?? ??? ??? ? Node n = d.selectSingleNode("students/student[@class='T264']/name");
?? ??? ??? ? //打印该节点的内容
?? ??? ??? ? System.out.println(n.getStringValue());
?? ??? ??? ??
?? ??? ?}
}
?

上部分代码输出为:?

????????

<student id="1001">
      <name>李洲</name>
      <age>18</age>
      <tel>119</tel>
   </student>
1
null
李洲
<student id="1002" class="T264">
      <name>阳波</name>
      <age>38</age>
      <tel>120</tel>
   </student>
2
T264
阳波
阳波
  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2021-07-11 16:30:26  更:2021-07-11 16:32:16 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/20 7:33:38-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码