首页 > 编程语言 >Java程序中两种配置文件(xml和properties)的加载读取方法

Java程序中两种配置文件(xml和properties)的加载读取方法

时间:2024-04-10 20:58:42浏览次数:29  
标签:xml Java 配置文件 prop input config properties

 

Java程序中,经常需要从配置文件中加载并读取设置,以支持不同的配置环境和参数。最常用的配置文件格式是XML和properties。两种方法都非常基础,适合于简单的配置文件读取需求。对于更复杂的需求,可能需要更高级的解析技术或第三方库。

参考文档:Java程序中两种配置文件(xml和properties)的加载读取方法-CJavaPy

一、xml配置文件

<?xmlversion="1.0"encoding="UTF-8"?>
<!-- const.xml -->
<config>
    <database>
        <url>127.0.0.1</url>
        <port>1521</port>
        <login>admin</login>
        <password>pass</password>
    </database>
</config>

1、Apache Commons Configuration读取xml配置文件

1)使用Maven引入Commons Configuration,pom.xml配置文件如下,

<dependencies>
    <dependency>
        <groupId>commons-configuration</groupId>
        <artifactId>commons-configuration</artifactId>
        <version>1.8</version>
    </dependency>
    <dependency>
        <groupId>commons-beanutils</groupId>
        <artifactId>commons-beanutils</artifactId>
        <version>1.8.0</version>
    </dependency>
    <dependency>
        <groupId>commons-jxpath</groupId>
        <artifactId>commons-jxpath</artifactId>
        <version>1.3</version>
    </dependency>
</dependencies>

2)读取xml配置文件代码

XMLConfiguration config =new XMLConfiguration("const.xml");
//127.0.0.1
config.getString("database.url"); 
//1521
config.getString("database.port");

3)通过XPath表达式读取xml配置文件代码

XMLConfiguration config =new XMLConfiguration("const.xml");
config.setExpressionEngine(new XPathExpressionEngine());
//127.0.0.1
config.getString("databases/database[name = 'dev']/url");       
//192.23.44.100
config.getString("databases/database[name = 'production']/url");

文档:Commons Configuration – Java Configuration API

2、JDOM读取xml配置文件

文档:JDOM: Documentation

SAXBuilder parser = new SAXBuilder();
Document docConfig = parser.build("config.xml");
Element elConfig = docConfig.getRootElement();
String host = elConfig.getChildText("url");

二、properties配置文件

dbpassword=password
database=localhost
dbuser=levi

1)读取properties配置文件代码如下,

Properties prop = new Properties();
InputStream input = null;

try {

	input = new FileInputStream("config.properties");

	//加载properties文件
	prop.load(input);

	//get the property value and print it out
	System.out.println(prop.getProperty("database"));
	System.out.println(prop.getProperty("dbuser"));
	System.out.println(prop.getProperty("dbpassword"));

} catch (IOException ex) {
	ex.printStackTrace();
} finally {
	if (input != null) {
		try {
			input.close();
		} catch (IOException e) {
			e.printStackTrace();
		}
	}
}

2)从项目的classpath中读取properties配置文件

Properties prop = new Properties();
InputStream input = null;
try {
    String filename = "config.properties";
    input = test.class.getClassLoader().getResourceAsStream(filename);
    if (input == null) {
        System.out.println("Sorry, unable to find " + filename);
        return;
    }
    //从class文件路径加载properties文件
    prop.load(input);
    //获取属性值并打印出来
    System.out.println(prop.getProperty("database"));
    System.out.println(prop.getProperty("dbuser"));
    System.out.println(prop.getProperty("dbpassword"));
} catch (IOException ex) {
    ex.printStackTrace();
} finally {
    if (input != null) {
        try {
            input.close();
        } catch (IOException e) {
            e.printStackTrace();
        }
    }

 参考文档:Java程序中两种配置文件(xml和properties)的加载读取方法-CJavaPy

标签:xml,Java,配置文件,prop,input,config,properties
From: https://www.cnblogs.com/tinyblog/p/18127382

相关文章

  • 游戏分享网站的设计与实现|SpringBoot+ Mysql+Java+ B/S结构(可运行源码+数据库+LW)手
    本项目包含可运行源码+数据库+LW,文末可获取本项目的所有资料。推荐阅读300套最新项目持续更新中.....最新ssm+java项目文档+视频演示+可运行源码分享最新jsp+java项目文档+视频演示+可运行源码分享最新SpringBoot项目文档+视频演示+可运行源码分享2024年56套包含java,ssm......
  • 汽车车辆租赁系统的设计与实现|SpringBoot+ Mysql+Java+ B/S结构(可运行源码+数据库+L
    本项目包含可运行源码+数据库+LW,文末可获取本项目的所有资料。推荐阅读300套最新项目持续更新中.....最新ssm+java项目文档+视频演示+可运行源码分享最新jsp+java项目文档+视频演示+可运行源码分享最新SpringBoot项目文档+视频演示+可运行源码分享2024年56套包含java,ssm......
  • 智慧外贸系统的设计与实现|SpringBoot+ Mysql+Java+ B/S结构(可运行源码+数据库+LW)买
    本项目包含可运行源码+数据库+LW,文末可获取本项目的所有资料。推荐阅读300套最新项目持续更新中.....最新ssm+java项目文档+视频演示+可运行源码分享最新jsp+java项目文档+视频演示+可运行源码分享最新SpringBoot项目文档+视频演示+可运行源码分享2024年56套包含java,ssm......
  • JAVA数组
    1.1数组的概念所谓数组(array),就是相同数据类型的元素按一定顺序排列的集合,就是把有限个类型相同的变量用一个名字命名,以便统一管理他们,然后用编号区分他们,这个名字称为数组名,编号称为下标或索引(index)。组成数组的各个变量称为数组的元素(element)。数组中元素的个数称为数......
  • JAVA L2-041 插松枝
    【22年真题】这是一道并不完美的题解,还有很多纰漏但已经是我的极限了...记录一下importjava.io.StreamTokenizer;importjava.util.ArrayDeque;importjava.util.Deque;importjava.util.Iterator;importjava.io.InputStreamReader;importjava.io.BufferedReader;i......
  • Java8 Stream API全面解析——高效流式编程的秘诀
    文章目录什么是StreamApi?快速入门流的操作创建流中间操作filter过滤map数据转换flatMap合并流distinct去重sorted排序limit限流skip跳过peek操作终结操作forEach遍历forEachOrdered有序遍历count统计数量min最小值max最大值reduce聚合collect收集anyM......
  • java基础语法(16)| 集合
    前言Hello,大家好!很开心与你们在这里相遇,我是一个喜欢文字、喜欢有趣的灵魂、喜欢探索一切有趣事物的女孩,想与你们共同学习、探索关于IT的相关知识,希望我们可以一路陪伴~1.集合概述什么是集合集合:集合是java中提供的一种容器,可以用来存储多个数据,并且可以存储任意类型......
  • Java基础语法(14)| Object类、String类
    1.Object类Object类概述 java.lang.Object类是Java语言中的根类,即所有类的父类。它中描述的所有方法子类都可以使用。在对象实例化的时候,最终找的父类就是Object。如果一个类没有特别指定父类,那么默认则继承自Object类。例如:publicclassMyClass{ }publicclas......
  • JavaScript 中的深度学习
    JS-PyTorch是一个JavaScript库,从头开始构建,以紧密跟随PyTorch的语法。它以一种文档完备、单元测试和可解释的方式实现,因此可以帮助其他JavaScript学习者进入机器学习!欢迎尝试Web演示!(本文视频讲解:java567.com)1.简介src/tensor.ts包含一个完全功能的张量(Tensor)对象,可以......
  • Java登陆第四十二天——Axios拦截器
    如果想在axios发送HTTP请求之前。或者是接收响应之前做一些额外的工作,可以通过拦截器完成。Axios拦截器分为请求拦截器,响应拦截器。分别在请求或响应时生效。一图了解Axios拦截器提供了两种文本函数:名字太长,直接看语法语法格式如下://请求拦截器,f1对应请求发送成功函数,f2......