JavaEE 初阶篇-深入了解特殊文件(Properties 属性文件、XML)

news2025/4/6 13:47:39

🔥博客主页: 【小扳_-CSDN博客】
❤感谢大家点赞👍收藏⭐评论✍

文章目录

        1.0 Properties 属性文件概述

        1.1 Properties 属性文件特性与作用

        1.2 使用 Properties 把键值对数据写出到属性文件中

        1.3 使用 Properties 读取属性文件里的键值对数据

        2.0 XML 概述

        2.1 XML 的特点

        2.2 XML 的作用和应用场景

        2.3 将 dom4j.jar 下载并导入项目

        2.4 解析 XML 文件


        1.0 Properties 属性文件概述

        Properties 属性文件是Java中一种常见的配置文件,用于存储键值对。它通常以“.properties”为后缀,采用“key=value”的格式来存储数据,其中“key”表示属性名,而“value”表示属性值。

        1.1 Properties 属性文件特性与作用

特性:

        1)以键值对的方式存储数据或者数据关系。

        2)键不能重复出现。

        3)属性文件一般会以“.properties”作为后缀。

作用:

        存储有键值对关系的数据,比如:用户与密码等。

        1.2 使用 Properties 把键值对数据写出到属性文件中

构造器:

        public Properties():用于构建 Properties 集合对象(空容器)

常用的方法:

        1)public Object setProperties(String key,String value):保存键值对数据到 Properties 对象中去。简单来说,先把数据存放在容器中。

        2)public void store(OutputStream os,String comments):把键值对数据,通过字节输出流写到属性文件里去。comments 这个参数是写备注信息。简单来说,将容器中的数据再通过字节输出流写到属性文件中。

        3)public void store(Writer w,String comments):把键值对数据,通过字符输出流写到属性文件里去。comments 这个参数是写备注信息。简单来说,将容器中的数据再通过字符输出流写到属性文件中。

代码演示:

import java.io.FileWriter;
import java.io.IOException;
import java.util.Properties;

public class demo {
    public static void main(String[] args) throws IOException {
        //先创建好 Properties 容器
        Properties properties = new Properties();
        //再通过setProperty方法先将数据写到容器中
        properties.setProperty("用户","密码");
        properties.setProperty("小明","123");
        properties.setProperty("小板","456");
        properties.setProperty("小童","789");
        //接着通过store方法将容器里的内容写到属性文件中
        properties.store(new FileWriter("D:\\software\\code\\2023_java\\2023_java_code\\code_24_4_29\\src\\MyProperties\\text.properties"),"这是一个注释");
        
    }
}

运行结果:

        1.3 使用 Properties 读取属性文件里的键值对数据

构造器:

        public Properties():用于构建 Properties 集合对象(空容器)

常用的方法:

        1)public void load(InputStream is):通过字节输入流,读取属性文件里的键值对数据。简单来说,将文件中的内容通过字节流输入到 Properties 容器中。

        2)public void load(Reader reader):通过字符输入流,读取属性文件里的键值对数据。简单来说,将文件中的内容通过字符流输入到 Properties 容器中。

        3)public String getProperty(String key):根据键获取值(其实就是 get 方法的效果)。简单来说,从 Properties 容器中根据键来获取相对应的值。

        4)public Set<String> stringPropertyNames():获取全部键的集合(其实就是 keySet 方法的效果)。

代码演示:

import java.io.FileReader;;
import java.util.Properties;
import java.util.Set;

public class demo2 {
    public static void main(String[] args) throws Exception {
        //先创建一个容器 Properties
        Properties properties = new Properties();
        //接着通过load方法将文件中的数据写到容器里
        properties.load(new FileReader("D:\\software\\code\\2023_java\\2023_java_code\\code_24_4_29\\src\\MyProperties\\text.properties"));
        //再把容器中的数据读取出来
        //根据一个键来获取一个值的方式
        String value = properties.getProperty("小明");
        System.out.println(value);
        String value1 = properties.getProperty("小板");
        System.out.println(value1);
        String value2 = properties.getProperty("小童");
        System.out.println(value2);
        System.out.println("======================");

        //获取全部键
        Set<String> set = properties.stringPropertyNames();
        for (String s : set) {
            System.out.println(s + " :" + properties.getProperty(s));
        }
    }
}

运行结果:

        2.0 XML 概述

        XML 可扩展标记语言,是一种用于存储和传输数据的标记语言。XML 被设计用来传输和存储数据,同时具有自我描述性和可扩展性的特点。XML 的语法规则比较严格,它使用标签来标记数据,标签可以自定义,从而使 XML 具有很强的灵活性。

        本质是一种数据的格式,可以用来存储复杂的数据结构,和数据关系。

        2.1 XML 的特点

        1)XML 中的 <标签名> 称为一个标签或一个元素,一般是成对出现的。

        2)XML 中的标签名可以自己定义(可扩展),但必须要正确的嵌套。

        3)XML 中只能由一个根标签。

        4)XML 中的标签可以有多个属性。

        5)如果一个文件中放置的是 XML 格式的数据,这个文件就是 XML 文件,后缀一般要写成 .xml 。

        6)抬头声明必须有且必须放在第一行。


<?xml version="1.0" encoding="utf-8" ?>
<!-- 以上为抬头声明,抬头声明必须有,且必须放在第一行 -->

举个 XML 例子:

<?xml version="1.0" encoding="utf-8" ?>
<!-- 以上为用户信息 -->
<users>
    <user id="1">
        <name>张三</name>
        <age>19</age>
        <地址>学校</地址>
        <data>99</data>
    </user>
    <user id="2">
        <name>李四</name>
        <age>20</age>
        <地址>学校</地址>
        <data>90</data>
    </user>
    <user id="3">
        <name>王五</name>
        <age>18</age>
        <地址>学校</地址>
        <data>89</data>
    </user>

</users>

补充:

        1)XML 中可以定义注释信息:<!-- 注释内容 -->

        2)XML 中书写 "<"、"&" 等,可能会出现冲突,导致报错,此时可以用如下特殊字符替代。

        3)XML 中可以写一个叫 CDATA 的数据区:

<![CDATA[...内容...]]>

        里面的内容随便写。

        2.2 XML 的作用和应用场景

        本质是一种数据格式,可以存储复杂的数据结构,和数据关系。

        经常用来做为系统的配置文件,或者作为一种特殊的数据结构,在网络中进行传输。

        2.3 将 dom4j.jar 下载并导入项目

        使用程序来读取 XML 文件中的内容。需要用到解析 XML 的框架,如:Dom4j(第三方研发的开源的框架)。

        1)接下来先下载 Dom4j 。通过该网址  Maven Repository: Search/Browse/Explore (mvnrepository.com) ,进去搜索 Dom4j 。

        完成这个流程就已经将 Dom4j.jar 下载到本地上了。

        2)接着需要将该 Dom4j.jar 导入到项目中

1.复制粘贴到工程目录下

2.接着将该 dom4j.jar 添加为库

        完成以上流程,就已经成功将 dom4j.jar 导入到项目中了。

        2.4 解析 XML 文件

(1)SAXReader:提供解析器,可以认为是代表整个 Dom4j 框架。

构造器:

        public SAXReader():构建 Dom4j 的解析器对象。

常用方法:

        1)public Document read(String url):把 XML 文件读成 Document 对象。

        2)public Document read(InputStream is):通过字节输入流读取 XML 文件。

        3)Element getRootElement():获得根元素对象。

(2)Document

常用的方法:

        1)public String getName():获得元素名字。

        2)public List<Element> elements():获得当前元素下所有子元素。

        3)public List<Element> elements(String name):获得当前元素下指定名字的子元素返回集合。

        4)public Element element(String name):获得当前元素下指定名字的子元素,如果有很多名字相同的返回第一个。

        5)public String attributeValue(String name):通过属性名直接得到属性值。

        6)public String elementText(子元素名):得到指定名称的子元素的文本。

        7)public String getText():得到文本。

代码演示:

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import java.util.List;

public class demo {
    public static void main(String[] args) throws DocumentException {
        //先创建解析器
        SAXReader saxReader = new SAXReader();
        //通过解析器的read方法,将XML进行解析为Document
        Document document = saxReader.read("D:\\software\\code\\2023_java\\2023_java_code\\code_24_4_29\\src\\MyXML\\text2.xml");

        //根据document对象先获取根元素对象
        Element rootElement = document.getRootElement();
        System.out.println("输出的是根元素的名字"+rootElement.getName());

        //根据根元素再通过无参elements()方法获取全部子元素对象
        List<Element> elementList = rootElement.elements();


        //进行遍历输出
        System.out.println("遍历输出子元素名字");
        for (Element element : elementList) {
            System.out.println(element.getName());
        }
        System.out.println("===============");

        //根据根元素通过有参elements(String name)方法获取指定名字的子元素对象
        System.out.println("遍历指定的子元素对象,输出该子元素的名字");
        List<Element> elementList1 = rootElement.elements("user");
        for (Element element : elementList1) {
            System.out.println(element.getName());
        }
        System.out.println("===============");

        //获取指定的元素,如果有同名,将会获取第一个user的Element对象
        Element element = rootElement.element("user");
        //再获取该对象的全部的属性,并将其输出属性名与属性值
        List<Attribute> attributeList = element.attributes();
        for (Attribute attribute : attributeList) {
            System.out.println(attribute.getName() + " :" +attribute.getValue());
        }
        System.out.println("===============");

        //通过element元素来获取子元素的文本
        String name = element.elementText("name");
        String  age = element.elementText("age");
        String  address = element.elementText("地址");
        System.out.println(name + " ," + age + " ," + address);
        System.out.println("===============");

        //通过element获取下的子元素
        Element elementName = element.element("name");
        //再来输出文本
        String name1 = elementName.getText();
        System.out.println(name1);
    }
}

运行结果:

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

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

相关文章

JMeter 请求头信息配置详解

在进行 Web 测试和 API 测试时&#xff0c;正确配置 HTTP 请求头是关键步骤之一&#xff0c;尤其当使用诸如 JMeter 这样的强大工具时。在本文中&#xff0c;我将详细介绍如何在 JMeter 中有效地配置和管理HTTP请求头。 在 JMeter 中添加和配置 HTTP 请求头 步骤 1: 打开 HTT…

【Redis 开发】多级缓存,本地进程缓存Caffeine

多级缓存 多级缓存本地进程缓存CaffeineCaffeine三种缓存驱逐策略 多级缓存 Redis处理并发的能力是非常强大的&#xff0c;但是tomcat的支持并发的能力跟不上Redis的性能&#xff0c;导致整体性能的下降 Redis缓存失效时&#xff0c;会对数据库产生冲击&#xff0c;之间再无屏…

0425DormAJAX项目

0425DormAJAX项目包-CSDN博客 数据库字段 添加界面&#xff1a; 初始状态&#xff1a; 点击性别&#xff0c;宿舍号使用ajax动态添加&#xff1a; 学生主界面&#xff1a; 实现分页查询&#xff1a; 点击修改学生宿舍&#xff0c;查看换寝记录&#xff0c;ajax动态显示列表&…

如何在WordPress中设置网站的SEO标题和描述

在WordPress中&#xff0c;想要让你的网站在搜索引擎结果中脱颖而出&#xff0c;设置优秀的SEO标题和描述至关重要。这不仅可以帮助搜索引擎更好地理解你的网站内容&#xff0c;还可以吸引更多的点击率和流量。而选择一款合适的SEO插件是实现这一目标的关键之一。让我们来看看两…

速成AWD并获奖的学习方法和思考记录

前言 这是一个市赛。之前没有怎么打过AWD&#xff0c;所以进入决赛后只有三天的准备时间&#xff0c;期间我不停的请教大佬&#xff0c;阅读各类文章&#xff0c;受益颇深&#xff0c;做此纪录&#xff0c;奉献给掌控的各位同学学习。 在AWD中本是三人一队&#xff0c;可惜我…

Babel 原理浅析

Babel 原理浅析 Babel 是什么Babel 的作用及常用场景Babel 执行过程原理Babel的基本原理解析过程插件系统 Babel 是什么 官方解释&#xff1a;Babel 是一个 JavaScript 编译器&#xff0c;也是一个工具链&#xff0c;主要用于将 ECMAScript 2015 代码转换为当前和旧版浏览器或环…

一篇文章 学会Qt 样式表(qss)

QML 中风格和主题的设计可以通过配置文件选择现有几种中的一种&#xff0c;或者直接在控件定义时&#xff0c;指定其属性&#xff0c;如背景颜色或者字体大小。在QWidget框架中&#xff0c;则通过了一种叫做qss样式表的东西来进行描述&#xff0c;跟CSS逻辑上类似。 这个qss抽…

ThreeJs模拟工厂生产过程八

这节算是给这个车间场景收个尾&#xff0c;等了几天并没有人发设备模型给我&#xff0c;只能自己找了一个凑合用了。加载模型之前&#xff0c;首先要把货架上的料箱合并&#xff0c;以防加载模型之后因模型数量多出现卡顿&#xff0c;方法和之前介绍的合并传送带方法相同&#…

【C++初阶】string

✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅ ✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨ &#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1f33f;&#x1…

echarts tooltip 内容太多,超出范围显示不全问题,亲测有效

参考文章&#xff1a;echarts tooltip显示不全问题 在项目里面的tooltip数据特别多&#xff0c;显示不全问题&#xff08;有下面几种方法&#xff0c;选择最适合自己的&#xff09;&#xff1a; 1、如果盒子还够大&#xff0c;只是tooltip飘到上面或者下面被覆盖住了&#xff…

一文解读 SQL 生成工具

SQL 生成工具可用于测试 Parser 与其他数据库产品的兼容性&#xff0c;通过解析 YACC 语法文件中的产生式&#xff0c;生成对应的 SQL 语句&#xff0c;再使用数据库执行该 SQL&#xff0c;根据结果判断语句是否与其他数据库语法兼容。 01工具使用 语法文件预处理 预处理目的…

13 Linux实操篇-网络配置

第十三章 Linux实操篇-网路配置 13.1 Linux 网络配置原理图 13.2 查看网络IP 和网关 子网ip 与网关 13.3 查看Windows 中 VMnet8 和 Linux 的网络配置 查看Windows 中 VMnet8&#xff1a;ipconfig Linux 的网络配置: ifconfig 13.4 ping 测试主机之间网络连通性 基本语法&a…

教育装备展火热开幕,锐捷网络用科技力量点亮教育未来之光

了解教育装备行业发展新趋势、感受教育装备领域创新脉动。4月19日,一场汇聚智慧与创新的教育行业盛会——第 83 届中国教育装备展示会在山城重庆隆重启幕。位于N4013号的锐捷网络展位不仅汇聚了极简以太全光3.X、三擎云桌面2.X、极简教育城域网等前沿科技方案,更通过样机展示、…

ssl证书是怎么实现数据加密传输的?原理是什么?

SSL证书实现数据加密传输的过程大致可以分为以下几个步骤&#xff1a; 1. 握手阶段&#xff1a; - 客户端请求连接&#xff1a;当用户尝试访问一个HTTPS网站时&#xff0c;浏览器&#xff08;客户端&#xff09;会向服务器发起一个HTTPS请求&#xff0c;请求建立一个安全连接。…

通过iMock学习Jvmsandbox

Jvm-sandbox Jvm-sandbox基于Jvm-sandbox的Mock平台iMockiMock的工程学习iMock怎么写的&#xff08;sandbox的module应该怎么写&#xff09; Jvm-sandbox Jvm-sandbox是阿里开源的一款java的沙箱&#xff0c;看网上的介绍在沙箱里你可以做你能想到的奇妙的事情。 基于Jvm-san…

图题目:可以到达所有点的最少点数目

文章目录 题目标题和出处难度题目描述要求示例数据范围 解法思路和算法代码复杂度分析 题目 标题和出处 标题&#xff1a;可以到达所有点的最少点数目 出处&#xff1a;1557. 可以到达所有点的最少点数目 难度 4 级 题目描述 要求 给定一个有向无环图&#xff0c;包含编…

Web3与智能合约:科技革新下的新金融时代

在当今数字化时代&#xff0c;Web3和智能合约正在共同塑造着金融领域的未来。Web3作为下一代互联网的重要组成部分&#xff0c;以其去中心化、安全性和透明性为核心特点&#xff0c;正推动着金融行业向着数字化和去中心化的方向发展。而智能合约作为Web3技术的关键应用之一&…

如何将本地项目上传到Github(SSH方式)

天行健&#xff0c;君子以自强不息&#xff1b;地势坤&#xff0c;君子以厚德载物。 每个人都有惰性&#xff0c;但不断学习是好好生活的根本&#xff0c;共勉&#xff01; 文章均为学习整理笔记&#xff0c;分享记录为主&#xff0c;如有错误请指正&#xff0c;共同学习进步。…

OSPF基本配置

原理概述 OSPF 是一种应用非常广泛的基于链路状态的动态路由协议&#xff0c;它具有区域&#xff08; Area )化的层次结构&#xff0c;扩展性好&#xff0c;收敛速度快&#xff0c;适合部署在各种规模的网络上。 在 OSPF 中&#xff0c;每台路由器都必须有一个 Router-I…

在线商城客服系统,多用户电商系统可API对接客服软件

在当今数字化时代&#xff0c;在线商城客服系统和多用户电商系统之间的无缝API对接已成为电商行业的重要趋势。这种整合为商家提供了更高效的客户服务和管理方式&#xff0c;提升了用户体验和业务效率。其中&#xff0c;商淘云电商客服系统作为一款强大的客服管理工具&#xff…