当前位置: 首页 > news >正文

JavaWeb-特殊文件(propertis与XML)

 

 

目录

Properties文件

 一.properties介绍

二.properties使用

三.解决中文乱码问题

XML文件

一.XML介绍

二.XML文件的语法规则

三.XML的使用


Properties文件

 一.properties介绍

1.什么是properties文件

Properties文件是一种常用的配置文件格式,用于存储键值对(key-value pairs)的数据。它通常以文本文件的形式存在,其中每一行都包含一个键值对,通过等号(=)或冒号(:)进行分隔。属性文件主要用于在软件开发中保存和读取配置信息,例如应用程序的参数、数据库连接信息、国际化资源等。

2.properties文件的特点

  1. 键值对:每个属性都由唯一的键和对应的值组成。
  2. 无序:属性文件中的键值对是无序的,没有固定顺序。
  3. 简单易读:属性文件使用简单的文本格式,易于编辑和阅读。
  4. 支持注释:可以通过在行首添加注释符号(#或!)来添加注释,注释内容将被忽略。
  5. 支持层级结构:键值对中的键可以使用点号(.)进行分割,创建层级结构。

注意:

1.输入格式只能是键值对即键=值 如name = 张三

2.键的名字不能重复,比如不能重复两个name

3.文件的后缀名一般是.propertis结尾

3.properties的核心作用

properties由键值对可以看出这本质是java中集合框架的Map,但是一般不会当集合来使用

其核心作用是:properties是用来代表属性文件的,通过Properties可以读写属性文件里面的内容


二.properties使用

创建properties文件

 然后设置内容为 键名=键值,如下

age=15
email=123456@qq.com
name=张三
slary=15000

 4.程序获取Properties内容

通过构造器Public Properties()构建Properties对象

写入常用方法

方法描述
load(InputStream is)从输入流中加载Properties文件。
load(Reader reader)从Reader对象中加载Properties文件。
getProperty(String key)根据指定的键获取相应的属性值。
setProperty(String key, String value)设置指定键的属性值。
stringPropertyNames()返回一个包含所有属性名的Set集合,每个属性名都是字符串类型。

案例代码:

package PropertiesTest;import java.io.FileReader;
import java.util.Properties;public class javaDemo {public static void main(String[] args) {
//        创建Resource对象Properties properties = new Properties();
//        加载Properties内容try {properties.load(new FileReader("E:\\javatest\\src\\test.properties"));
//            获取键对应的值String name = properties.getProperty("name");System.out.println(name);
//            设置对应的键值properties.setProperty("name","黄小龙");String name2  = properties.getProperty("name");System.out.println(name2);
//            输出所有内容System.out.println(properties);}catch (Exception e){e.printStackTrace();}}
}

 写出常用方法:

方法描述
setProperty(String key, String value)设置指定键的属性值。
store(OutputStream os, String comment)将Properties对象中的键值对存储到输出流,并可添加注释。
store(Writer w, String comment)将Properties对象中的键值对存储到Writer对象,并可添加注释。

案例代码:

package PropertiesTest2;import java.io.FileReader;
import java.io.FileWriter;
import java.util.Properties;public class javaDemo {public static void main(String[] args)throws Exception {//        创建properties对象Properties properties = new Properties();
//        加载原本拥有的键值对(防止覆盖原来内容)properties.load(new FileReader("E:\\javatest\\src\\test.properties"));//        设置需要存储的键值对properties.setProperty("slary","15000");properties.setProperty("婚姻情况","未婚");properties.setProperty("财产状况","破产");//        将设置的键值对存储到属性文件中去properties.store(new FileWriter("E:\\javatest\\src\\test.properties"),"补充其个人信息");}
}

三.解决中文乱码问题

5.解决中文乱码问题

第一次运行时候获取键对应的value时候中文的返回值为???

问题原因就在于编码格式不同导致不同编码使用时候无法识别

找到设置

 找到编辑器->的文件编码,按照如下即可


XML文件

一.XML介绍

1.什么是XML文件

XML(可扩展标记语言)是一种用于存储和传输数据的文本格式。它被设计用于结构化数据的描述和交换,广泛应用于互联网和其他领域。XML文件使用自定义的标签来表示数据的不同部分,并使用起始标签和结束标签包围数据。

2.XML的特点

  1. 可读性:XML文件使用纯文本格式,易于阅读和理解。它使用标签和元素对数据进行结构化描述。

  2. 可扩展性:XML文件是可扩展的,可以根据需要定义自己的标签和结构。这使得XML非常灵活,适用于各种数据表示需求。

  3. 自描述性:XML文件包含了标签和属性,这些标签和属性可以提供关于数据内容、结构和类型的附加信息。这使得XML文件能够自描述其所包含的数据。

  4. 平台无关性:XML文件不依赖于任何特定的操作系统或编程语言。它是一种通用的数据格式,可以在不同平台和环境中使用和解析。

3.XML的作用

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

比如说在Maven中配置jar包,在JavaWeb配置Web.xml,在Mybatis中配置数据库连接等等。


二.XML文件的语法规则

1.设置抬头声明

<?xml version="1.0" encoding="UTF-8" ?>
<!--抬头声明必须放在第一行-->
<!--根标签只有一个-->

version:XML的默认版本号

encoding:本XML的编码方式

2.XML注释

中通过<!--注释内容-->

3.特殊字符转换

在XML中书写 '>','<','&',等特殊字符可能会出现冲突报错,所以需要将其转换成对应的特殊字符,如下。

原始字符转义字符字符含义
<&lt;小于
>&gt;大于
&&amp;和号
'&apos;单引号
"&quot;双引号

4.<![CDATA{   }]>随意书写区域

 <user id="1"><name>黄飞宏</name><age>19</age><salary>3000</salary><![CDATA[ 随意书写区域  ]]]></user>

三.XML的使用

首先需要创建xml文件,并设置内容

<?xml version="1.0" encoding="UTF-8" ?>
<Users><user><name>黄飞宏</name><age>50</age><adress>广东</adress></user><user><name>张三</name><age>21</age><adress>广西</adress></user>
</Users>

1.下载解析器

由于正常下用io流访问xml文件十分麻烦,所以可以使用开源的框架,比如Dom4j框架

如果有Maven的话,可以直接导入jar包,会自动在中央仓库中下载对应的jar包,十分方便

Maven构建工具下载与配置(图文详细)_Alphamilk的博客-CSDN博客

 <dependencies><dependency><groupId>dom4j</groupId><artifactId>dom4j</artifactId><version>1.6.1</version></dependency></dependencies>

如果没有Maven构建工具的同学则需要到对应的官网去下载对应的jar包,并在src下创建lib目录后手动将jar包复制进去

2.使用解析器

首先需要创建解析器,并解析文件

//        创建一个Dom4框架的解析器SAXReader saxReader = new SAXReader();//        使用saxReader对象将对象解析成为一个可读的Document对象Document document = saxReader.read("E:\\MyBaits-project01\\src\\main\\resources\\Test.xml");

解析后的Document对象被Element对象接收

//        从文档对象解析XML文件的全部数据
//        获取根标签Element root = document.getRootElement();
//        获取根标签名字System.out.println(root.getName());

3.Element提供的方法

方法名描述
getName()获取当前元素的名称
elements()获取当前元素的所有子元素
elements(String name)获取当前元素指定名称的子元素列表
attributeValue(String name)获取当前元素指定属性的值
elementText(String childElementName)获取当前元素指定子元素的文本内容

 案例代码:

package com.alphamilk.mybatis;import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;import java.util.Iterator;
import java.util.List;public class App {public static void main(String[] args) throws Exception{
//        创建一个Dom4框架的SAXReader saxReader = new SAXReader();//        使用saxReader对象将对象解析成为一个可读的Document对象Document document = saxReader.read("E:\\MyBaits-project01\\src\\main\\resources\\Test.xml");//        从文档对象解析XML文件的全部数据
//        获取根标签Element root = document.getRootElement();
//        获取根标签名字System.out.println(root.getName());//        获取根标签下的所有子标签List<Element> list = root.elements();Iterator<Element> iterator = list.iterator();
//        输出所有子标签while (iterator.hasNext()){System.out.println(iterator.next().getName());}//        获取user标签下的user标签name的内容,如果有多个则取第一个userElement user = root.element("user");System.out.println(user.elementText("name"));}
}


 

相关文章:

JavaWeb-特殊文件(propertis与XML)

目录 Properties文件 一.properties介绍 二.properties使用 三.解决中文乱码问题 XML文件 一.XML介绍 二.XML文件的语法规则 三.XML的使用 Properties文件 一.properties介绍 1.什么是properties文件 Properties文件是一种常用的配置文件格式&#xff0c;用于存储键值…...

ffmpeg合并mp4视频文件

下载ffmpeg Download FFmpeg 2配置环境 右键此电脑-》属性-》高级系统设置 环境变量-》path 解压上面ffmpeg压缩包&#xff0c;找到bin目录&#xff0c;复制完整路径&#xff0c;添加到path环境变量中 测试ffmpeg ffmpeg合并MP4文件 创建一个文本文件&#xff0c;例如inpu…...

ATF BL1/BL2 ufs_read_blocks/ufs_write_blocks使用分析

ATF BL1/BL2 ufs_read_blocks/ufs_write_blocks使用分析 1 ATF的下载链接2 ATF BL1/BL2 ufs_read_blocks/ufs_write_blocks处理流程2.1 ATF BL1/BL2 ufs_read_blocks2.2 ATF BL1/BL2 ufs_write_blocks 3 UFS System Model4 ufs_read_blocks/ufs_write_blocks详细分析4.1 ufs_re…...

Elasticsearch(十二)搜索---搜索匹配功能③--布尔查询及filter查询原理

一、前言 本节主要学习ES匹配查询中的布尔查询以及布尔查询中比较特殊的filter查询及其原理。 复合搜索&#xff0c;顾名思义是一种在一个搜索语句中包含一种或多种搜索子句的搜索。 布尔查询是常用的复合查询&#xff0c;它把多个子查询组合成一个布尔表达式&#xff0c;这些…...

解决Windows下的docker desktop无法启动问题

以管理员权限运行cmd 报错&#xff1a; docker: error during connect: Post http://%2F%2F.%2Fpipe%2Fdocker_engine/v1.40/containers/create: open //./pipe/docker_engine: The system cannot find the file specified. In the default daemon configuration on Windows,…...

LLM生成式 AI 项目生命周期Generative AI project lifecycle

在本课程的其余部分中&#xff0c;您将学习开发和部署LLM驱动应用所需的技巧。在这个视频中&#xff0c;您将了解一个能帮助您完成此工作的生成式AI项目生命周期。此框架列出了从构思到启动项目所需的任务。到课程结束时&#xff0c;您应该对您需要做的重要决策、可能遇到的困难…...

java高并发系列 - 第13天:JUC中的Condition对象

java高并发系列 - 第13天:JUC中的Condition对象 java高并发系列第13篇文章 本文内容 synchronized中实现线程等待和唤醒Condition简介及常用方法介绍及相关示例使用Condition实现生产者消费者使用Condition实现同步阻塞队列Object对象中的wait(),notify()方法,用于线程等待…...

【TTY子系统】printf与printk深入驱动解析

tty子系统解析 tty子系统是一个庞大且复杂&#xff0c;也是内核维护者所头大的子系统。 At a first glance, the TTY layer wouldn’t seem like it should be all that challenging. It is, after all, just a simple char device which is charged with transferring byte-o…...

无涯教程-PHP - 全局变量函数

全局变量 与局部变量相反,可以在程序的任何部分访问全局变量。通过将关键字 GLOBAL 放置在应被识别为全局变量的前面,可以很方便地实现这一目标。 <?php$somevar15;function addit() {GLOBAL $somevar;$somevar;print "Somevar is $somevar";}addit(); ?> …...

shell脚本之循环语句

循环语句 循环含义 将某代码段重复运行多次&#xff0c;通常有进入循环的条件和退出循环的条件 for循环语句 一般知道循环次数使用for循环 第一类 格式1&#xff1a; for名称 in 取值次数;do;done; 格式2&#xff1a; for 名称 in {取值列表} do done# 打印20次 for i i…...

派森 #P122. 峰值查找

描述 给定一个长度为n的列表nums&#xff0c;请你找到峰值并返回其索引。数组可能包含多个峰值&#xff0c;在这种情况下&#xff0c;返回任何一个所在位置即可。 &#xff08;1&#xff09;峰值元素是指其值严格大于左右相邻值的元素。严格大于即不能有等于&#xff1b; &…...

基础网络详解4--HTTP CookieSession 思考

一、cookie技术思考 一台多用户浏览器发起了三笔请求&#xff0c;将某款产品放入购物车中&#xff0c;A一次&#xff0c;选择了篮球&#xff1b;B两次&#xff0c;第一次选了足球&#xff0c;第二次选了钢笔。如何确认选择篮球、足球、钢笔的请求属于谁呢&#xff1f;如果不确认…...

14. 利用Canvas自制时钟组件

1. 说明 在自定义时钟组件时&#xff0c;使用到的基本控件主要是Canvas&#xff0c;在绘制相关元素时有两种方式&#xff1a;一种时在同一个canvas中绘制所有的部件元素&#xff0c;这样需要不断的对画笔和画布的属性进行保存和恢复&#xff0c;容易混乱&#xff1b;另一种就是…...

微信小程序使用云存储和Markdown开发页面

最近想在一个小程序里加入一个使用指南的页面&#xff0c;考虑到数据存储和减少页面的开发工作量&#xff0c;决定尝试在云存储里上传Markdown文件&#xff0c;微信小程序端负责解析和渲染。小程序端使用到一个库Towxml。 Towxml Towxml是一个可将HTML、Markdown转为微信小程…...

【C++】运算符重载 | 赋值运算符重载

Ⅰ. 运算符重载 引入 ❓什么叫运算符重载&#xff1f; 就是&#xff1a;运用函数&#xff0c;将现有的运算符重新定义&#xff0c;使其能满足各种自定义类型的运算。 回想一下&#xff0c;我们以前运算的对象是不是都是int、char这种内置类型&#xff1f; 那我们自定义的“…...

Python学习 -- 类对象从创建到常用函数

在Python编程中&#xff0c;类是一种强大的工具&#xff0c;用于创建具有共同属性和行为的对象。本篇博客将详细介绍Python中类和对象的创建&#xff0c;类的属性和方法&#xff0c;以及一些常用的类函数&#xff0c;通过丰富的代码例子来帮助读者深入理解。 一、类和对象的创…...

数组分割(2023省蓝桥杯)n种讨论 JAVA

目录 1、题目描述&#xff1a;2、前言&#xff1a;3、动态规划&#xff08;bug)&#xff1a;3、递归 剪枝&#xff08;超时&#xff09;&#xff1a;4、数学&#xff08;正解&#xff09;&#xff1a; 1、题目描述&#xff1a; 小蓝有一个长度为 N 的数组 A [A0, A1,…, AN−…...

很好的启用window10专业版系统自带的远程桌面

启用window10专业版系统自带的远程桌面 文章目录 启用window10专业版系统自带的远程桌面前言1.找到远程桌面的开关2. 找到“应用”项目3. 打开需要远程操作的电脑远程桌面功能 总结 前言 Windows操作系统作为应用最广泛的个人电脑操作系统&#xff0c;在我们身边几乎随处可见。…...

TCP定制协议,序列化和反序列化

目录 前言 1.理解协议 2.网络版本计算器 2.1设计思路 2.2接口设计 2.3代码实现&#xff1a; 2.4编译测试 总结 前言 在之前的文章中&#xff0c;我们说TCP是面向字节流的&#xff0c;但是可能对于面向字节流这个概念&#xff0c;其实并不理解的&#xff0c;今天我们要介…...

YOLOX在启智AI GPU/CPU平台部署笔记

文章目录 1. 概述2. 部署2.1 拉取YOLOX源码2.2 拉取模型文件yolox_s.pth2.3 安装依赖包2.4 安装yolox2.5 测试运行2.6 运行报错处理2.6.1 ImportError: libGL.so.1: cannot open shared object file: No such file or directory2.6.2 ImportError: libgthread-2.0.so.0: cannot…...

零基础设计模式——行为型模式 - 责任链模式

第四部分&#xff1a;行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习&#xff01;行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想&#xff1a;使多个对象都有机会处…...

第 86 场周赛:矩阵中的幻方、钥匙和房间、将数组拆分成斐波那契序列、猜猜这个单词

Q1、[中等] 矩阵中的幻方 1、题目描述 3 x 3 的幻方是一个填充有 从 1 到 9 的不同数字的 3 x 3 矩阵&#xff0c;其中每行&#xff0c;每列以及两条对角线上的各数之和都相等。 给定一个由整数组成的row x col 的 grid&#xff0c;其中有多少个 3 3 的 “幻方” 子矩阵&am…...

图表类系列各种样式PPT模版分享

图标图表系列PPT模版&#xff0c;柱状图PPT模版&#xff0c;线状图PPT模版&#xff0c;折线图PPT模版&#xff0c;饼状图PPT模版&#xff0c;雷达图PPT模版&#xff0c;树状图PPT模版 图表类系列各种样式PPT模版分享&#xff1a;图表系列PPT模板https://pan.quark.cn/s/20d40aa…...

C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。

1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj&#xff0c;再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...

深度学习习题2

1.如果增加神经网络的宽度&#xff0c;精确度会增加到一个特定阈值后&#xff0c;便开始降低。造成这一现象的可能原因是什么&#xff1f; A、即使增加卷积核的数量&#xff0c;只有少部分的核会被用作预测 B、当卷积核数量增加时&#xff0c;神经网络的预测能力会降低 C、当卷…...

以光量子为例,详解量子获取方式

光量子技术获取量子比特可在室温下进行。该方式有望通过与名为硅光子学&#xff08;silicon photonics&#xff09;的光波导&#xff08;optical waveguide&#xff09;芯片制造技术和光纤等光通信技术相结合来实现量子计算机。量子力学中&#xff0c;光既是波又是粒子。光子本…...

AirSim/Cosys-AirSim 游戏开发(四)外部固定位置监控相机

这个博客介绍了如何通过 settings.json 文件添加一个无人机外的 固定位置监控相机&#xff0c;因为在使用过程中发现 Airsim 对外部监控相机的描述模糊&#xff0c;而 Cosys-Airsim 在官方文档中没有提供外部监控相机设置&#xff0c;最后在源码示例中找到了&#xff0c;所以感…...

C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)

名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...

6个月Python学习计划 Day 16 - 面向对象编程(OOP)基础

第三周 Day 3 &#x1f3af; 今日目标 理解类&#xff08;class&#xff09;和对象&#xff08;object&#xff09;的关系学会定义类的属性、方法和构造函数&#xff08;init&#xff09;掌握对象的创建与使用初识封装、继承和多态的基本概念&#xff08;预告&#xff09; &a…...

二维FDTD算法仿真

二维FDTD算法仿真&#xff0c;并带完全匹配层&#xff0c;输入波形为高斯波、平面波 FDTD_二维/FDTD.zip , 6075 FDTD_二维/FDTD_31.m , 1029 FDTD_二维/FDTD_32.m , 2806 FDTD_二维/FDTD_33.m , 3782 FDTD_二维/FDTD_34.m , 4182 FDTD_二维/FDTD_35.m , 4793...