目录
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"));
}
}