Properties文件
编辑
一.properties介绍
1.什么是properties文件
Properties文件是一种常用的配置文件格式,用于存储键值对(key-value pairs)的数据。它通常以文本文件的形式存在,其中每一行都包含一个键值对,通过等号(=)或冒号(:)进行分隔。属性文件主要用于在软件开发中保存和读取配置信息,例如应用程序的参数、数据库连接信息、国际化资源等。
2.properties文件的特点
- 键值对:每个属性都由唯一的键和对应的值组成。
- 无序:属性文件中的键值对是无序的,没有固定顺序。
- 简单易读:属性文件使用简单的文本格式,易于编辑和阅读。
- 支持注释:可以通过在行首添加注释符号(#或!)来添加注释,注释内容将被忽略。
- 支持层级结构:键值对中的键可以使用点号(.)进行分割,创建层级结构。
注意:
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的特点
- 可读性:XML文件使用纯文本格式,易于阅读和理解。它使用标签和元素对数据进行结构化描述。
- 可扩展性:XML文件是可扩展的,可以根据需要定义自己的标签和结构。这使得XML非常灵活,适用于各种数据表示需求。
- 自描述性:XML文件包含了标签和属性,这些标签和属性可以提供关于数据内容、结构和类型的附加信息。这使得XML文件能够自描述其所包含的数据。
- 平台无关性: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中书写 '>','<','&',等特殊字符可能会出现冲突报错,所以需要将其转换成对应的特殊字符,如下。
原始字符 | 转义字符 | 字符含义 |
< |
< |
小于 |
> |
> |
大于 |
& |
& |
和号 |
' |
' |
单引号 |
" |
" |
双引号 |
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的内容,如果有多个则取第一个user Element user = root.element("user"); System.out.println(user.elementText("name")); } }
编辑