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

news2024/11/14 6:44:40

学习总结

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/mydb
  user: root
  password: 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.coloradmin.cn/o/2236431.html

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

相关文章

ffmpeg:视频字幕嵌入(GPU加速)

实现方案 参考指令 ffmpeg -i input_video.mp4 -vf "subtitlessubtitles.srt" output_video.mp4 解决因文件名称复杂导致的指令执行失败问题&#xff08;引号给文件框起来&#xff09; ffmpeg -i "A.mp4" -vf "subtitlesB.srt" "c.mp4&qu…

改进系列(3):基于ResNet网络与CBAM模块融合实现的生活垃圾分类

目录 1. ResNet介绍 2. CBAM 模块 3. resnet cbam 3.1 添加在每个layer层后 3.2 关于训练的建议 4. 垃圾分类实战 4.1 数据集 4.2 训练 4.3 最好的权重 4.4 推理 5. 其它 1. ResNet介绍 ResNet&#xff08;残差网络&#xff09;是一种深度卷积神经网络模型&#xf…

【HarmonyOS Next】数据本地存储:@ohos.data.preferences

【HarmonyOS Next】数据本地存储&#xff1a;ohos.data.preferences 在开发现代应用程序时&#xff0c;数据存储是一个至关重要的过程。应用程序为了保持某些用户设置、应用状态以及其他小量数据信息通常需要一个可靠的本地存储解决方案。在 HarmonyOS Next 环境下&#xff0c…

【从零开始的LeetCode-算法】3255. 长度为 K 的子数组的能量值 II

给你一个长度为 n 的整数数组 nums 和一个正整数 k 。 一个数组的 能量值 定义为&#xff1a; 如果 所有 元素都是依次 连续 且 上升 的&#xff0c;那么能量值为 最大 的元素。否则为 -1 。 你需要求出 nums 中所有长度为 k 的 子数组 的能量值。 请你返回一个长度为 n - …

C++ 参数传递 笔记

目录 1、输入参数的传递方式-选择传值还是传引用&#xff1f; 处理用户信息 处理坐标 处理配置 处理ID 2、对于需要修改的参数,使用非const引用传递 有趣的例外&#xff1a;警惕表象的迷惑 需要警惕的陷阱 “糟糕”的update方法&#xff1a; “完美”的set_name与set…

爬虫策略规避:Python爬虫的浏览器自动化

网络爬虫作为一种自动化获取网页数据的技术&#xff0c;被广泛应用于数据挖掘、市场分析、竞争情报等领域。然而&#xff0c;随着反爬虫技术的不断进步&#xff0c;简单的爬虫程序往往难以突破网站的反爬虫策略。因此&#xff0c;采用更高级的爬虫策略&#xff0c;如浏览器自动…

信号-3-信号处理、可重入函数与`volatile`关键字总结

信号处理是操作系统中的一个重要机制&#xff0c;它允许进程在运行期间响应外部事件&#xff0c;并作出相应的处理。为了处理信号&#xff0c;程序员需要理解如何设置信号处理器&#xff0c;如何管理信号的屏蔽与阻塞&#xff0c;以及信号的递送机制。本文将结合操作系统中的信…

深度学习-图像评分实验(TensorFlow框架运用、读取处理图片、模型建构)

目录 0、实验准备 ①实验环境 ②需要下载的安装包 ③注意事项&#xff08;很关键&#xff0c;否则后面内容看不懂&#xff09; ④容易出现的问题 1、查看数据并读取数据。 2、PIL库里的Image包进行读取&#xff08;.resize更改图片尺寸&#xff0c;并将原始数据归一化处…

【Linux系统】—— 基本指令(二)

【Linux系统】—— 基本指令&#xff08;二&#xff09; 1 「alias」命令1.1 「ll」命令1.2 「alias」命令 2 「rmdir」指令与「rm」指令2.1 「rmdir」2.2 「rm」2.2.1 「rm」 删除普通文件2.2.2 「rm」 删除目录2.2.3 『 * 』 通配符 3 「man」 指令4 「cp」 指令4.1 拷贝普通…

面向对象技术简述(含设计模式)

6.9.2 面向对象技术 面向对象 对象 分类 继承 通过消息的通信 面向对象 对象 分类 继承 通过消息的通信 面向对象对象分类继承通过消息的通信其中包括&#xff1a; 对象 运行的实体&#xff1b;既包含属性/数据&#xff0c;又包含方法/行为/操作数据的函数&#xff1b;…

【信号处理】基于联合图像表示的深度学习卷积神经网络

Combined Signal Representations for Modulation Classification Using Deep Learning: Ambiguity Function, Constellation Diagram, and Eye Diagram 信号表示 Ambiguity Function(AF) 模糊函数描述了信号的两个维度(dimensions):延迟(delay)和多普勒(Doppler)。 …

【C++练习】两个实型数的加法运算

题目&#xff1a; 编写一个C程序&#xff0c;实现两个实型数的加法运算并输出结果。 要求&#xff1a; 定义一个函数 dadd&#xff0c;该函数接收两个 double 类型的参数&#xff0c;并返回它们的和。在 main 函数中&#xff0c;提示用户输入两个实型数&#xff08;double 类…

【开源免费】基于SpringBoot+Vue.JS周边产品销售网站(JAVA毕业设计)

博主说明&#xff1a;本文项目编号 T 061 &#xff0c;文末自助获取源码 \color{red}{T061&#xff0c;文末自助获取源码} T061&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析…

Sql面试题二:请查询出用户连续三天登录的所有数据记录

问题&#xff1a; 现有用户登录记录表&#xff0c;请查询出用户连续三天登录的所有数据记录 id dt 1 2024-04-25 1 2024-04-26 1 2024-04-27 1 2024-04-28 1 2024-04-30 1 2024-05-01 1 2024-05-02 1 2024-05-04 1 2024-05-05 2 2…

科研绘图系列:R语言分组堆积图(grouped stacked barplot)

禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍加载R包准备画图主题数据链接导入数据画图数据准备图例图1图2合并图系统信息介绍 分组堆积图(Grouped Stacked Bar Chart)是一种数据可视化图表,它结合了分组柱状图和堆积柱状图…

世界技能竞赛大数据应用开发环境1:1还原

集群情况 模块A搭建环境&#xff0c;在容器中搭建大数据平台 Pc机&#xff0c;安装安装比赛需要软件 模块B中使用idea快速开发完成数据处理 模块E包含了接口数据&#xff0c;使用vs code快速搭建vue数据可视化

【网络协议大花园】应用层 http协议的使用小技巧,用好了都不用加班,效率翻两倍(下篇)

本篇会加入个人的所谓鱼式疯言 ❤️❤️❤️鱼式疯言:❤️❤️❤️此疯言非彼疯言 而是理解过并总结出来通俗易懂的大白话, 小编会尽可能的在每个概念后插入鱼式疯言,帮助大家理解的. &#x1f92d;&#x1f92d;&#x1f92d;可能说的不是那么严谨.但小编初心是能让更多人…

SpringBoot源码解析(一)

SpringBoot自动装配原理 SpringBootApplication注解 我们在使用SpringBoot时&#xff0c;通常使用的是SpringBootApplication这个注解&#xff0c;比如&#xff1a; 而这个注解的定义为下图&#xff0c;可以发现这个注解上有另外三个注解&#xff1a;SpringBootConfiguration…

流类库与输入输出

来源&#xff1a;《C语言程序设计》 像C语言一样&#xff0c;C语言也没有输入输出语句。 但C标准库中有一个面向对象的输入输出软件包&#xff0c;即I/O流类库。 流是I/O流类的中心概念。 ------ I/O流类库是C语言中I/O函数在面向对象的程序设计方法中的一个替换产品。 -…

k8s图形化显示(KRM)

在master节点 kubectl get po -n kube-system 这个命令会列出 kube-system 命名空间中的所有 Pod 的状态和相关信息&#xff0c;比如名称、状态、重启次数等。 systemctl status kubelet #查看kubelet状态 yum install git #下载git命令 git clone https://gitee.com/duk…