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

devtools/2024/11/6 13:07:50/

学习总结

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类来读取属性文件。以下是一个示例代码:

java">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解析器的示例代码:

java">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的示例代码:

java">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的示例代码:

java">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.ppmy.cn/devtools/131764.html

相关文章

vue使用方法创建组件

vue 中 创建 组件 使用 方法创建组件 vue2 中 import vueComponent from xxxx function createFn(){const creator Vue.extend(vueComponent);const instance new creator();document.appendChild(instance.$el); }vue3 中 import { createApp } from "vue"; im…

刘艳兵-DBA026-以下哪些HINT是有效的?

以下哪些HINT是有效的&#xff1f; A INDEX_FFS B INDEX_RS C NO_INDEX_FFS D NO_INDEX_RS 答&#xff1a; A INDEX_FFS C NO_INDEX_FFS INDEX_FFS 用于提示优化器对表执行快速全索引扫描&#xff08;Fast Full Index Scan&#xff09;。 NO_INDEX_FFS 用于…

【大数据学习 | kafka】producer之拦截器,序列化器与分区器

1. 自定义拦截器 interceptor是拦截器&#xff0c;可以拦截到发送到kafka中的数据进行二次处理&#xff0c;它是producer组成部分的第一个组件。 public static class MyInterceptor implements ProducerInterceptor<String,String>{Overridepublic ProducerRecord<…

精美的美食食谱分享首页

效果图&#xff1a; 完整代码&#xff0c;图片素材如下&#xff1a; <!DOCTYPE html> <html lang"zh-CN"> <head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0&…

Melty 主体流程图

┌───────────┐ │ 用户输入 │ └─────┬─────┘ │&#xff08;自然语言或指令&#xff09; │ ▼ ┌───────────┐ │ 自然语言处理 │ │ &#xff08;NLU 模块&#xff09;│ └─────┬─────┘ │ │ 解析用户意图 │ ▼ ┌─…

简单的 docker 部署ELK

简单的 docker 部署ELK 这是我的运维同事部署ELK的文档&#xff0c;我这里记录转载一下 服务规划 架构: Filebeat->kafka->logstash->ES kafka集群部署参照: kafka集群部署 部署服务程序路径/数据目录端口配置文件elasticsearch/data/elasticsearch9200/data/elas…

Java对象-在内存中是怎样执行的?

首先&#xff0c;java程序是在JVM中跑的&#xff0c;而JVM是在内存中执行的&#xff0c;虚拟机为了更好的执行程序&#xff0c;会把内存划分为三个区域&#xff0c;栈内存&#xff0c;堆内存&#xff0c;方法区&#xff0c;其中方法区用来存放类文件 class Student{String nam…

JS之正则表达式

一、什么是正则表达式 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8"><meta name"viewport" content"widthdevice-width, initial-scale1.0"><title>Document</title> </…