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/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必备面试-热点-热门问题精华核心总结-推荐
 往期文章大全……
在这里插入图片描述

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

更多内容,点这里❤

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

全面解析:网络协议及其应用

&#x1f493; 博客主页&#xff1a;瑕疵的CSDN主页 &#x1f4dd; Gitee主页&#xff1a;瑕疵的gitee主页 ⏩ 文章专栏&#xff1a;《热点资讯》 全面解析&#xff1a;网络协议及其应用 全面解析&#xff1a;网络协议及其应用 全面解析&#xff1a;网络协议及其应用 网络协议…

软件压力测试有多重要?北京软件测试公司有哪些?

软件压力测试是一种基本的质量保证行为&#xff0c;它是每个重要软件测试工作的一部分。压力测试是给软件不断加压&#xff0c;强制其在极限的情况下运行&#xff0c;观察它可以运行到何种程度&#xff0c;从而发现性能缺陷。 在数字化时代&#xff0c;用户对软件性能的要求越…

聊一聊Qt中的Slider和ProgressBar

目录 QAbstractSilder 主要属性 设置值 信号 其他功能 API QSlider 主要功能 控制刻度 信号 用户交互 键盘操作 API QProgressBar API QScrollBar 详细描述 QDial API 一个示例 Slider和ProgressBar从某种程度上都是反应了自己对目标控件的进度状态。在Qt中…

源鲁杯 2024 web(部分)

[Round 1] Disal F12查看: f1ag_is_here.php 又F12可以发现图片提到了robots 访问robots.txt 得到flag.php<?php show_source(__FILE__); include("flag_is_so_beautiful.php"); $a$_POST[a]; $keypreg_match(/[a-zA-Z]{6}/,$a); $b$_REQUEST[b];if($a>99999…

qt QFileDialog详解

1、概述 QFileDialog是Qt框架中的一个对话框类&#xff0c;用于提供一个标准的文件选择对话框。它允许用户浏览文件系统&#xff0c;选择一个或多个文件或目录&#xff0c;以及指定文件名。QFileDialog支持本地文件系统和远程文件系统&#xff08;如通过FTP或SFTP访问的文件系…

【客户服务】客户不是上帝---投诉管理新智慧

第一讲 怎样正确看待客户投诉 什么是客户投诉 当客户对于产品或服务产生不满&#xff0c;当客户的需求得不到满足时&#xff0c;就会产生客户投诉。 投诉的根源有两方面 产品质量服务质量 投诉对企业是好事还是坏事 坏事&#xff1a;不良口碑的传递和客户的升级投诉会影响…

责任链模式 Chain of Responsibility

1 意图 使多个对象都有机会处理请求&#xff0c;从而避免请求的发送者和接收者之间的耦合关系。将这些对象连成一条链&#xff0c;并沿着这条链传递该请求&#xff0c;直到有一个对象处理它为止。 2 结构 Handler 定义一个处理请求的接口;(可选)实现后继链。 ConcreteHandler …

JMM内存模型,JMM三大特性(面试回答)

1.什么是JMM JMM就是Java内存模型(java memory model)。因为在不同的硬件生产商和不同的操作系统下&#xff0c;内存的访问有一定的差异&#xff0c;所以会造成相同的代码运行在不同的系统上会出现各种问题。所以Java内存模型(JMM)屏蔽掉各种硬件和操作系统的内存访问差异&…

Mybatis查询数据库,返回List集合,集合元素也是List。

#有时间需求会要求&#xff1a;查询全校的学生数据&#xff0c;且学生数据按班级划分。那么就需要List<List<user>>类型的数据。 SQL语句 SELECT JSON_ARRAYAGG(JSON_OBJECT(name , name ,BJMC, BJMC ,BJBH,BJBH)) as dev_user FROM dev_user WHERE project_id …

CKA认证 | 使用kubeadm部署K8s集群(v1.26)

一、前置知识点 1.1 生产环境可部署Kubernetes集群的两种方式 目前生产部署Kubernetes集群主要有两种方式&#xff1a; ① kubeadm Kubeadm是一个K8s部署工具&#xff0c;提供kubeadm init和kubeadm join&#xff0c;用于快速部署Kubernetes集群。 ② 二进制包 从github下…

ffmpeg命令——从wireshark包中的rtp包中分离h264

ffmpeg命令——从wireshark包中的rtp包中分离h264 过滤 RTP打开wireshark的RTP 播放器选中流并导出荷载使用 ffmpeg 命令行分离出 h264 过滤 RTP 打开wireshark的RTP 播放器 选中流并导出荷载 使用 ffmpeg 命令行分离出 h264 ffmpeg -i test.raw -vcodec copy -an -f h264 tes…

w~自动驾驶~合集5

我自己的原文哦~ https://blog.51cto.com/whaosoft/12304427 # 智能驾驶仿真测试的『虚幻』与『真实』 先给大家讲个故事&#xff1a;某主机厂计划构建一套智能驾驶仿真环境&#xff0c;但需同时满足“对外展示”和“项目使用”两方面需求&#xff0c;与供应商商讨一个月后&…

大数据-207 数据挖掘 机器学习理论 - 多重共线性 矩阵满秩 线性回归算法

点一下关注吧&#xff01;&#xff01;&#xff01;非常感谢&#xff01;&#xff01;持续更新&#xff01;&#xff01;&#xff01; 目前已经更新到了&#xff1a; Hadoop&#xff08;已更完&#xff09;HDFS&#xff08;已更完&#xff09;MapReduce&#xff08;已更完&am…

sql专题 之 常用命令

文章目录 查询基础语法查询全表查询选择查询&#xff1a;常量和运算&#xff1a; 条件查询where运算符&#xff1a;、 !、<、>空值&#xff1a;null模糊查询&#xff1a;like逻辑运算&#xff1a;and or not 去重&#xff1a;distinct排序&#xff1a;order by截断和偏移…

网络原理(应用层)->HTTPS解

前言&#xff1a; 大家好我是小帅&#xff0c;今天我们来了解HTTPS, 个人主页&#xff1a;再无B&#xff5e;U&#xff5e;G 文章目录 1.HTTPS1.1HTTPS 是什么&#xff1f;1.2 "加密" 是什么1.3 HTTPS 的⼯作过程1.3. 1对称加密1.3.2⾮对称加密 1.4中间人攻击1.5 证书…

计算机网络:简述LAN口模式下NAT和代理的区别

LAN口模式 NAT和代理的区别 LAN口模式下的NAT和代理的区别主要体现在定义、功能和应用场景上。 # NAT和代理的定义和功能 ‌NAT&#xff08;网络地址转换&#xff09;‌&#xff1a;NAT是一种网络地址翻译技术&#xff0c;它将内部私有IP地址转换为公网IP地址&#xff0c;使得…

java项目之协力服装厂服装生产管理系统的设计与实现(springboot)

风定落花生&#xff0c;歌声逐流水&#xff0c;大家好我是风歌&#xff0c;混迹在java圈的辛苦码农。今天要和大家聊的是一款基于springboot的协力服装厂服装生产管理系统的设计与实现。项目源码以及部署相关请联系风歌&#xff0c;文末附上联系信息 。 项目简介&#xff1a; …

排序算法之插排希尔

算法时间复杂度&#xff08;最好&#xff09;时间复杂度&#xff08;平均&#xff09;时间复杂度&#xff08;最差&#xff09;空间复杂度插入排序O(n&#xff09;O(n^2)O(n^2)1希尔排序O(n)O(n^1.3)O(n^2) 1 1.插入排序 玩牌时&#xff0c;每得到一张&#xff0c;就要把它插入…

SSH实验1

Telnet实验&#xff1a; 服务端&#xff1a; 安装telnet的服务端并启动: 用本机telnet连接服务端&#xff08;连接不上&#xff0c;因为防火墙没放行telnet服务&#xff09;&#xff1a; 使防火墙放行telnet服务&#xff08;登录成功&#xff09;&#xff1a; SSH实验&#x…

Vue(JavaScript)读取csv表格并求某一列之和(大浮点数处理: decimal.js)

文章目录 想要读这个表格&#xff0c;并且求第二列所有价格的和方法一&#xff1a;通过添加文件输入元素上传csv完整&#xff08;正确&#xff09;代码之前的错误部分因为价格是小数&#xff0c;所以下面的代码出错。如果把parseFloat改成parseInt&#xff0c;那么求和没有意义…