特殊文件
- 普通文件:普通的属性文件,里面的内容可以随便写,格式随意,如:
.txt文件 - 特殊文件:对格式有特殊要求,如:
.xml文件、.properties文件。 - 为什么要用这些特殊文件?
- 存储有关系的数据,作为系统的配置文件
- 作为信息进行传输
- 这些特殊文件,我们主要学什么?
- 了解他们的特点、作用
- 学习使用程序读取它们里面的数据
- 学习使用程序把数据存储到这些文件里
Properties属性文件
Properties
- Properties是一个Map集合(键值对集合),但是我们一般不会当集合使用
- 核心作用:Properties是用来代表属性文件的,通过Properties可以读写属性文件里的内容
使用Properties对属性文件里的键值对数据进行操作
构造方法:
构造方法 说明 public Properties()由于构建Properties集合对象(空容器) 使用Properties读取属性文件里的键值对数据:
方法名称 说明 public void load(InputStream is)通过字节输入流,读取属性文件里的键值对数据 public void load(Reader reader)通过字符输入流,读取属性文件里的键值对数据 public String getProperty(String key)根据键获取值(其实就是get方法的效果) public Set<String> stringPropertyNames()获取全部键的集合(其实就是keySet方法的效果) 使用使用Properties把键值对数据写出到属性文件里去:
方法名称 说明 public Object setProperty(String key, String value)保存键值对数据到Properties对象中去 public void store(OutputStream os, String comments)把键值对数据,通过字节输出流写出到属性文件里去 public void store(Writer w, String comments)把键值对数据,通过字符输出流写出到属性文件里去
XML文件
概述
XML
- 全称
EXtensible Markup Language,可扩展标记语言 - 本质是一种数据的格式,可以用来存储复杂的数据结构,和数据关系
- 全称
XML的特点
- XML中的“<标签名>”称为一个标签或一个元素,一般是成对出现的
- XML中的标签名可以自己定义(可扩展),但必须要正确的嵌套
- XML中的只能有一个根标签
- XML中标签可以有属性
- 如果一个文件中放置的是XML格式的数据,这个文件就是XML文件,后缀一般要写成
.xml
XML的语法规则
XML文件的后缀名为:
.xml,文档声明必须是第一行1
2
3
version:XML默认的版本号码、该属性是必须存在的
encoding:本XML文件的编码XML中可以定义注释信息:
<!-- 注释内容 -->XML中书写”<“、”&”等可能会出现冲突,导致报错,此时可以用如下特殊字符替代
字符 代替符号 含义 <<小于 >>大于 &&和 '&apos单引号 ""双引号 XML中可以写一个叫CDATA的数据区:
<![CDATA[ ...内容... ]]>,里面的内容可以随便写。
XML的作用的应用场景:
- 作用:本质是一种数据格式,可以存储复杂的数据结构,和数据关系
- 应用场景:经常用来作为系统的配置文件,或者作为一种特殊的数据结构,在网络中进行操作
读取XML文件中的数据
解析XML文件
使用程序读取XML文件中的数据
注意:程序员并不需要自己写原始的IO流代码来解析XML,难度较大!也相当繁琐!
其实,有很多开源的,好用的,解析XML的框架,最知名的是:
DOM4J(第三方研发的)DOM4J解析XML文件的思想:文档对象模型

DOM4J解析XML-得到Document对象
SAXReader:Dom4j提供的解析器,可以认为是代表整个Dom4j框架
构造器/方法 说明 public SAXReader()构建Dom4j的解析器对象 public Document read(String url)把XML文件读取成Document对象 public Document read(InputStream is)通过字节输入流读取XML文件 Document
方法名 说明 Element getRootElement()获取根元素对象 Element提供的方法:
方法名 说明 public String getName()得到元素名字 public List<Element> elements()得到当前元素下的所有子元素 public List<Element> elements(String name)得到当前元素下指定名字的子元素返回集合 public Element element(String name)得到当前元素下指定名字的子元素,如果有很多名字相同的返回第一个 public String attributeValue(String name)通过属性名直接得到属性值 public String elementText(String name)得到指定名称的子元素的文本 public String getText()得到文本
使用程序把数据写出到XML文件中去
- 不建议使用dom4j做
- 推荐直接把程序里的数据拼接成XML格式,然后用IO流写出
补充知识:约束XML文件的编写[了解]
什么是约束XML文件的书写?
- 就是限制XML文件只能按照某种格式进行书写
约束文档:
- 专门用来限制xml书写格式的文档,比如限制标签、属性标签应该怎么写。
约束文档的分类:
- DTD文档
- Schema文档
XML文档约束-DTD的使用步骤:
编写DTD约束文档,后缀必须是
.dtd,如下1
2
3
4
5<!ELEMENT 书架 (书+)>
<!ELEMENT 书 (书名,作者,售价)>
<!ELEMENT 书名 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 售价 (#PCDATA)>在需要编写的XML文件中导入该DTD约束文档,
<!DOCTYPE 书架 SYSTEM "文件路径">然后XML文件,就必须按照DTD约束文档指定的格式进行编写,否则报错!
注意:不能约束具体的数据类型
XML文档约束-schema的使用步骤:
- 编写schema约束文档,后缀名必须是
.xsd - 在需要编写的XML文件中导入该schema约束文档
- 按照约束内容编写XML文件的标签
- 编写schema约束文档,后缀名必须是
日志技术
概述
- 什么是日志?
- 好比生活中的日记,可以记录你生活中的点点滴滴
- 程序中的日志,通常就是一个文件夹,里面记录的是程序运行过程中的各种信息
- 日志技术
- 可以将系统执行的信息,方便的记录到指定的位置(控制台、文件中、数据库中)
- 可以随时以开关的形式控制日志的启停,无需侵入到源代码中去进行修改
日志技术的体系
1 | graph LR |
- 日志框架:牛人或者第三方公司以及准备好的实现代码,后来者直接可以拿去使用
- 日志接口:设计日志框架的一套标准,日志框架需要实现这些接口
- 注意1:因为对
JCL接口不满意,有人就搞了SLF4J;因为对Log4j的性能不满意,有人就搞了Logback - 注意2:Logback是基于
SLF4J的日志规范实现的框架
Logback日志框架
介绍
- Logback日志框架官方网站:
https://logback.qos.ch/index.html - Logback日志框架有以下几个模块
Logback-core:基础模块,是其他两个模块依赖的基础(必须有)Logback-classic:完整实现了slf4jAPI的模块(必须有)Logback-access:与Tomcat和Jetty等Servlet容器集成,以提供HTTP访问日志的功能(可选)
- 想使用Logback日志框架,至少需要在项目中整合如下三个模块:
slf4j-api:日志接口logback-corelogbcak-classic
快速入门
实现步骤:
导入Logback框架到项目中去。
slf4j-api:日志接口、logback-core、logbcak-classic将Logback框架的核心配置文件
logback.xml直接拷贝到src目录下(必须是src下)创建Logback框架提供的
Logger对象,然后用Logger对象调用其提供的方法就可以记录系统的日志信息public static final Logger LOGGER = LoggerFactory.getLogger("类名")注意:对Logback日志框架的控制,都是通过其核心配置文件
logback.xml来实现的
核心配置文件
logback.xml对Logback日志框架进行控制的
日志的输出位置、输出格式的设置
1
2
3
4
5<!--
通常可以设置2个输出日志的位置:一个是控制台、一个是系统文件中
-->
<appender name="CONSOLE" class="ch.qos.logback.core.ConsoleAppender">
<appender name="FILE" class="ch.qos.logback.core.rolling.RollingFileAppender">开启日志(ALL),取消日志(OFF)
1
2
3
4<root level="ALL">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE" />
</root>
Logback设置日志级别
认识日志级别
日志级别指的是日志信息的类型,日志都会分级别,常见的日志级别如下(优先级依次升高):
日志级别 说明 trace追踪,指明程序运行轨迹 debug调试,实际应用中一般将其作为最低级别,而trace则很少使用 info输出重要的运行信息,数据连接、网络连接、IO操作等等,使用较多 warn警告信息,可能发生发生问题,使用较多 error错误信息,使用较多 只有日志级别是大于或等于核心配置文件配置的日志级别,才会被记录,否则不记录
1
2
3
4<root level="debug">
<appender-ref ref="CONSOLE"/>
<appender-ref ref="FILE" />
</root>