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; 就像这样一直转圈圈。 我想大多…

IO同步异步/阻塞非阻塞

同步和异步&#xff1a;当前线程是否需要等待方法调用执行完毕。 阻塞和非阻塞&#xff1a;当前接口数据还未准备就绪时&#xff0c;线程是否被阻塞挂起 同步和异步其实是处理框架这种高层次维度来看待问题的&#xff0c;而阻塞和非阻塞往往是针对底层的系统调用方法来抉择&a…

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;我在那<…

总结:Vue2中双向绑定不生效的排查方法及原理

之前陆陆续续的学习了Vue2的双向绑定,深度监视,但是真正使用时,需要将它们融会贯通,还是需要刻意的练习和记忆的。我常常遇到的问题是,当页面上某element UI控件与data中的某属性进行了双向绑定,但是,要么是data中的属性数据发生了更新之后页面未实时更新,要么是页面上…

网络自动化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;智能化、自动化地管理病人样品登…

如何为 GitHub 和 Gitee 项目配置不同的 Git 用户信息20241105

&#x1f3af; 如何为 GitHub 和 Gitee 项目配置不同的 Git 用户信息 引言 在多个代码托管平台&#xff08;如 GitHub 和 Gitee&#xff09;之间切换时&#xff0c;正确管理用户信息至关重要。频繁使用不同项目时&#xff0c;若用户配置不当&#xff0c;可能会导致意外提交或…

Android 原子性类型都有哪些

1. 基本类型原子类 AtomicInteger&#xff1a;用于对整数进行原子操作&#xff0c;如incrementAndGet()方法可以原子地将当前值加1并返回新值&#xff0c;getAndSet()方法可以原子地设置新值并返回旧值。AtomicLong&#xff1a;和AtomicInteger类似&#xff0c;用于长整型的原…

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

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

『YOLO』断点训练、解决训练中断异常情况

文章目录 方法一方法二 当yolo在训练的时候&#xff0c;如果训练中断或者出现异常&#xff0c;可通过修改代码&#xff0c;从上一次断掉处重新训练&#xff0c;实现断点续训。 方法一 第一种方法&#xff1a; 按照官方给出的恢复训练代码&#xff0c;用yolo命令格式&#xff…

网页版五子棋—— 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、面经吐血整理的 面试技…

C++网络编程之IO多路复用(一)

概述 在C网络编程中&#xff0c;处理并发连接是一个非常关键的核心问题。为了有效管理来自多个客户端的请求&#xff0c;服务器需要能够同时监听多个套接字上的事件&#xff0c;这通常通过IO多路复用来实现。 IO多路复用是一种工作机制&#xff0c;它可以让程序监视多个文件描述…