Java开发配置文件的详情教程配置文件类型

学习总结

1、掌握 JAVA入门到进阶知识(持续写作中……
2、学会Oracle数据库入门到入土用法(创作中……
3、手把手教你开发炫酷的vbs脚本制作(完善中……
4、牛逼哄哄的 IDEA编程利器技巧(编写中……
5、面经吐血整理的 面试技巧(更新中……

在这里插入图片描述

Java开发配置文件的详情教程

一、引言

在Java开发中,配置文件扮演着至关重要的角色。它们用于存储应用程序的设置、参数和其他重要信息,使得开发者能够轻松地调整应用程序的行为,而无需修改代码。本文将详细介绍如何在Java项目中配置和使用配置文件。

二、配置文件类型

Java项目中的配置文件通常包括以下几种类型:

  1. 属性文件(.properties):这是最常见的配置文件类型,采用键值对的形式存储配置信息。
  2. XML文件:XML文件具有结构化和可扩展性强的特点,常用于存储复杂的配置信息。
  3. YAML文件:YAML文件以简洁明了著称,近年来在Java项目中越来越受欢迎。
  4. JSON文件:JSON文件易于阅读和编写,也常用于存储配置信息。

三、创建和编辑配置文件

1. 创建属性文件

属性文件通常以.properties为后缀,内容格式如下:

# 示例属性文件
database.url=jdbc:mysql://localhost:3306/mydb
database.user=root
database.password=123456

2. 创建XML文件

XML文件的结构相对复杂,但具有更强的表达能力。以下是一个简单的XML配置文件示例:

<?xml version="1.0" encoding="UTF-8"?>
<configuration><database><url>jdbc:mysql://localhost:3306/mydb</url><user>root</user><password>123456</password></database>
</configuration>

3. 创建YAML文件

YAML文件以简洁明了著称,以下是一个简单的YAML配置文件示例:

database:url: jdbc:mysql://localhost:3306/mydbuser: rootpassword: 123456

4. 创建JSON文件

JSON文件易于阅读和编写,以下是一个简单的JSON配置文件示例:

{"database": {"url": "jdbc:mysql://localhost:3306/mydb","user": "root","password": "123456"}
}

四、读取配置文件

1. 读取属性文件

在Java中,可以使用java.util.Properties类来读取属性文件。以下是一个示例代码:

import java.io.FileInputStream;
import java.io.IOException;
import java.util.Properties;public class PropertiesLoader {public static void main(String[] args) {Properties properties = new Properties();try (FileInputStream input = new FileInputStream("config.properties")) {// 加载属性文件properties.load(input);// 获取属性值String dbUrl = properties.getProperty("database.url");String dbUser = properties.getProperty("database.user");String dbPassword = properties.getProperty("database.password");// 打印属性值System.out.println("Database URL: " + dbUrl);System.out.println("Database User: " + dbUser);System.out.println("Database Password: " + dbPassword);} catch (IOException ex) {ex.printStackTrace();}}
}

2. 读取XML文件

读取XML文件通常需要使用Java的DOM或SAX解析器。以下是一个使用DOM解析器的示例代码:

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.NodeList;
import java.io.File;public class XMLLoader {public static void main(String[] args) {try {File inputFile = new File("config.xml");DocumentBuilderFactory dbFactory = DocumentBuilderFactory.newInstance();DocumentBuilder dBuilder = dbFactory.newDocumentBuilder();Document doc = dBuilder.parse(inputFile);doc.getDocumentElement().normalize();Element rootElement = doc.getDocumentElement();NodeList nodeList = rootElement.getElementsByTagName("database");for (int i = 0; i < nodeList.getLength(); i++) {Element element = (Element) nodeList.item(i);String dbUrl = element.getElementsByTagName("url").item(0).getTextContent();String dbUser = element.getElementsByTagName("user").item(0).getTextContent();String dbPassword = element.getElementsByTagName("password").item(0).getTextContent();System.out.println("Database URL: " + dbUrl);System.out.println("Database User: " + dbUser);System.out.println("Database Password: " + dbPassword);}} catch (Exception e) {e.printStackTrace();}}
}

3. 读取YAML文件

读取YAML文件需要使用第三方库,如SnakeYAML。以下是一个使用SnakeYAML的示例代码:

import org.yaml.snakeyaml.Yaml;
import java.io.InputStream;
import java.util.Map;public class YAMLLoader {public static void main(String[] args) {Yaml yaml = new Yaml();try (InputStream inputStream = YAMLLoader.class.getClassLoader().getResourceAsStream("config.yaml")) {Map<String, Object> obj = yaml.load(inputStream);Map<String, String> database = (Map<String, String>) obj.get("database");String dbUrl = database.get("url");String dbUser = database.get("user");String dbPassword = database.get("password");System.out.println("Database URL: " + dbUrl);System.out.println("Database User: " + dbUser);System.out.println("Database Password: " + dbPassword);} catch (Exception e) {e.printStackTrace();}}
}

4. 读取JSON文件

读取JSON文件也需要使用第三方库,如Jackson或Gson。以下是一个使用Jackson的示例代码:

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.ObjectMapper;
import java.io.File;
import java.io.IOException;public class JSONLoader {public static void main(String[] args) {ObjectMapper objectMapper = new ObjectMapper();try {File file = new File("config.json");JsonNode rootNode = objectMapper.readTree(file);JsonNode databaseNode = rootNode.get("database");String dbUrl = databaseNode.get("url").asText();String dbUser = databaseNode.get("user").asText();String dbPassword = databaseNode.get("password").asText();System.out.println("Database URL: " + dbUrl);System.out.println("Database User: " + dbUser);System.out.println("Database Password: " + dbPassword);} catch (IOException e) {e.printStackTrace();}}
}

五、总结

本文详细介绍了Java开发中配置文件的类型、创建和编辑方法以及读取配置文件的方法。通过本文的学习,读者可以掌握如何在Java项目中配置和使用配置文件,从而更加灵活地管理应用程序的设置和参数。

往期文章

 第一章:日常_JAVA_面试题集(含答案)
 第二章:日常_JAVA_面试题集(含答案)
 平安壹钱包JAVA面试官:请你说一下Mybatis的实现原理
 Java必备面试-热点-热门问题精华核心总结-推荐
 往期文章大全……
在这里插入图片描述

一键三连 一键三连 一键三连~

更多内容,点这里❤

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/diannao/59431.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

应审稿人要求| pseudo bulk差异分析

一、写在前面 最近有粉丝提问&#xff0c;收到了如下的审稿人意见&#xff1a; 审稿人认为在单细胞测序过程中&#xff0c;利用findMarker通过Wilcox获得的差异基因虽然考虑到了不同组别细胞数量的不同&#xff0c;但是未能考虑到每组样本数量的不同。因此作者希望纳入样本水平…

Android13 系统/用户证书安装相关分析总结(二) 如何增加一个安装系统证书的接口

一、前言 接着上回说&#xff0c;最初是为了写一个SDK的接口&#xff0c;需求大致是增加证书安装卸载的接口&#xff08;系统、用户&#xff09;。于是了解了一下证书相关的处理逻辑&#xff0c;在了解了功能和流程之后&#xff0c;发现settings中支持安装的证书&#xff0c;只…

矩阵特殊打印方式

小伙伴们大家好&#xff0c;好几天没更新了&#xff0c;主要有个比赛。从今天起继续给大家更新&#xff0c;今天给大家带来一种新的题型&#xff1a;矩阵特殊打印方式。 螺旋打印矩阵 解题思路 首先给大家看一下什么是螺旋方式打印&#xff1a; 就像这样一直转圈圈。 我想大多…

C语言 流程控制语句

时间&#xff1a;2024.11.5 一、学习内容 流程控制语句&#xff1a; 通过一些语句&#xff0c;控制程序的执行流程。 1、顺序结构 从上往下依次执行&#xff0c;是程序默认的执行过程。 2、if的第一种格式 if(关系表达式) { 语句体&#xff1b; } //考试奖励&#xff1a;…

03集合基础

目录 1.集合 Collection Map 常用集合 List 接口及其实现 Set 接口及其实现 Map 接口及其实现 Queue 接口及其实现 Deque 接口及其实现 Stack类 并发集合类 工具类 2.ArrayList 3.LinkedList 单向链表的实现 1. 节点类&#xff08;Node&#xff09; 2. 链表类&a…

HTMLCSS:3D 旋转卡片的炫酷动画

效果演示 这段代码是一个HTML和CSS的组合&#xff0c;用于创建一个具有3D效果的动画卡片。 HTML <div class"obj"><div class"objchild"><span class"inn6"><h3 class"text">我是谁&#xff1f;我在那<…

网络自动化03:简单解释send_config_set方法并举例

目录 拓扑图设备信息 netmiko涉及方法send_config_set()方法的简单示例代码输出结果代码解释导入模块配置信息config_device_interface_description 函数主程序块总结 send_config_set方法参数&#xff1a;1. enter_config_mode2. config_commands3. enter_config_mode4. error…

什么是实验室信息(lis)系统?

医院LIS系统定义&#xff1a; 医院LIS系统&#xff0c;即实验室信息系统&#xff08;Laboratory Information System&#xff09;&#xff0c;是专为医院检验科设计的信息管理系统。它通过计算机网络技术实现实验仪器与计算机的联网&#xff0c;智能化、自动化地管理病人样品登…

MySQL45讲 第十六讲 “order by”是怎么工作的?

文章目录 MySQL45讲 第十六讲 “order by”是怎么工作的&#xff1f;一、引言二、全字段排序&#xff08;一&#xff09;索引创建与执行情况分析&#xff08;二&#xff09;执行流程&#xff08;三&#xff09;查看是否使用临时文件 三、rowid 排序&#xff08;一&#xff09;参…

网页版五子棋—— WebSocket 协议

目录 前言 一、背景介绍 二、原理解析 1.连接过程&#xff08;握手&#xff09; 2.报文格式 三、代码示例 1.服务端代码 &#xff08;1&#xff09;TestAPI 类 &#xff08;2&#xff09;WebSocketConfig 类 2.客户端代码 3.代码演示 结尾 前言 从本篇文章开始&am…

【综合案例】使用React编写B站评论案例

一、效果展示 默认效果&#xff0c;一开始默认按照最热进行排序 发布了一条评论 按照最新进行排序 按照最新进行排序 二、效果说明 页面上默认有3条评论&#xff0c;且一开始进入页面的时候是按照点赞数量进行倒序排列展示&#xff0c;可以点击【最热 、最新】进行排序的切换。…

docker镜像文件导出导入

1. 导出容器&#xff08;包含内部服务&#xff09;为镜像文件&#xff08;docker commit方法&#xff09; 原理&#xff1a;docker commit命令允许你将一个容器的当前状态保存为一个新的镜像。这个新镜像将包含容器内所有的文件系统更改&#xff0c;包括安装的软件、配置文件等…

区块链技术与应用-PKU 学习笔记

课程地址 资料&#xff1a; ETH-Security 区块链学习记录_比特币 BTC 密码学原理 比特币&#xff0c;又称加密货币(crypto-currency)&#xff0c;它主要利用了密码学中的哈希函数(cryptographic hash function)的抗碰撞特性(collision resistance)和单向散列特性(hiding) …

在Java中,实现数据库连接通常使用JDBC

学习总结 1、掌握 JAVA入门到进阶知识(持续写作中……&#xff09; 2、学会Oracle数据库入门到入土用法(创作中……&#xff09; 3、手把手教你开发炫酷的vbs脚本制作(完善中……&#xff09; 4、牛逼哄哄的 IDEA编程利器技巧(编写中……&#xff09; 5、面经吐血整理的 面试技…

【优选算法 — 双指针】双指针小专题

和为 s 的两个数 和为s的两个数 题目描述 解法一&#xff1a;暴力枚举 暴力枚举&#xff0c;先固定一个数&#xff0c;然后让这个数和另一个数匹配相加&#xff0c; 如果当前的数 所有剩余的数 target&#xff0c;则返回这两个数&#xff0c;否则固定下一个数&#…

并查集(基础学习与应用)

并查集 基本原理&#xff1a; 对于多个集合&#xff0c;每个集合中的多个元素用一颗树的形式表示&#xff0c;根节点的编号即为整个集合的编号&#xff0c;每个树上节点存储其父节点&#xff0c;使得当前集合的每个子节点都可以通过对父节点的询问来找到根节点&#xff0c;根…

003-Kotlin界面开发之声明式编程范式

概念本源 在界面程序开发中&#xff0c;有两个非常典型的编程范式&#xff1a;命令式编程和声明式编程。命令式编程是指通过编写一系列命令来描述程序的运行逻辑&#xff0c;而声明式编程则是通过编写一系列声明来描述程序的状态。在命令式编程中&#xff0c;程序员需要关心程…

Spring Boot 与 Vue 共筑地方特色美食分享卓越平台

作者介绍&#xff1a;✌️大厂全栈码农|毕设实战开发&#xff0c;专注于大学生项目实战开发、讲解和毕业答疑辅导。 &#x1f345;获取源码联系方式请查看文末&#x1f345; 推荐订阅精彩专栏 &#x1f447;&#x1f3fb; 避免错过下次更新 Springboot项目精选实战案例 更多项目…

react使用Fullcalendar 实战用法

使用步骤请参考&#xff1a;react使用Fullcalendar 卡片式的日历&#xff1a; 需求图&#xff1a; 卡片式的日历&#xff0c;其实我是推荐 antd的&#xff0c;我两个都写了一下都能实现。 antd 的代码&#xff1a; antd的我直接用的官网示例&#xff1a;antd 日历示例 i…

Flutter 正在切换成 Monorepo 和支持 workspaces

其实关于 Monorepo 和 workspaces 相关内容在之前《Dart 3.5 发布&#xff0c;全新 Dart Roadmap Update》 和 《Flutter 之 ftcon24usa 大会&#xff0c;创始人分享 Flutter 十年发展史》 就有简单提到过&#xff0c;而目前来说刚好看到 flaux 这个新进展&#xff0c;所以就再…