Java_特殊文件、日志技术

特殊文件

  1. 普通文件:普通的属性文件,里面的内容可以随便写,格式随意,如:.txt文件
  2. 特殊文件:对格式有特殊要求,如:.xml文件、.properties文件。
  3. 为什么要用这些特殊文件?
    • 存储有关系的数据,作为系统的配置文件
    • 作为信息进行传输
  4. 这些特殊文件,我们主要学什么?
    • 了解他们的特点、作用
    • 学习使用程序读取它们里面的数据
    • 学习使用程序把数据存储到这些文件里

Properties属性文件

  1. Properties

    • Properties是一个Map集合(键值对集合),但是我们一般不会当集合使用
    • 核心作用:Properties是用来代表属性文件的,通过Properties可以读写属性文件里的内容
  2. 使用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文件

概述

  1. XML

    • 全称EXtensible Markup Language,可扩展标记语言
    • 本质是一种数据的格式,可以用来存储复杂的数据结构,和数据关系
  2. XML的特点

    • XML中的“<标签名>”称为一个标签或一个元素,一般是成对出现的
    • XML中的标签名可以自己定义(可扩展),但必须要正确的嵌套
    • XML中的只能有一个根标签
    • XML中标签可以有属性
    • 如果一个文件中放置的是XML格式的数据,这个文件就是XML文件,后缀一般要写成.xml
  3. XML的语法规则

    • XML文件的后缀名为:.xml,文档声明必须是第一行

      1
      2
      3
      <?xml version="1.0" encoding="UTF-8" ?>
      version:XML默认的版本号码、该属性是必须存在的
      encoding:本XML文件的编码
    • XML中可以定义注释信息:<!-- 注释内容 -->

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

      字符 代替符号 含义
      < &lt 小于
      > &gt 大于
      & &amp
      ' &apos 单引号
      " &quot 双引号
    • XML中可以写一个叫CDATA的数据区:<![CDATA[ ...内容... ]]>,里面的内容可以随便写。

  4. XML的作用的应用场景:

    • 作用:本质是一种数据格式,可以存储复杂的数据结构,和数据关系
    • 应用场景:经常用来作为系统的配置文件,或者作为一种特殊的数据结构,在网络中进行操作

读取XML文件中的数据

  1. 解析XML文件

    • 使用程序读取XML文件中的数据

    • 注意:程序员并不需要自己写原始的IO流代码来解析XML,难度较大!也相当繁琐!

    • 其实,有很多开源的,好用的,解析XML的框架,最知名的是:DOM4J(第三方研发的)

    • DOM4J解析XML文件的思想:文档对象模型

  2. 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() 得到文本
  3. 使用程序把数据写出到XML文件中去

    • 不建议使用dom4j做
    • 推荐直接把程序里的数据拼接成XML格式,然后用IO流写出

补充知识:约束XML文件的编写[了解]

  1. 什么是约束XML文件的书写?

    • 就是限制XML文件只能按照某种格式进行书写
  2. 约束文档:

    • 专门用来限制xml书写格式的文档,比如限制标签、属性标签应该怎么写。
  3. 约束文档的分类:

    • DTD文档
    • Schema文档
  4. XML文档约束-DTD的使用步骤:

    • 编写DTD约束文档,后缀必须是.dtd,如下

      1
      2
      3
      4
      5
      <!ELEMENT 书架 (书+)>
      <!ELEMENT 书 (书名,作者,售价)>
      <!ELEMENT 书名 (#PCDATA)>
      <!ELEMENT 作者 (#PCDATA)>
      <!ELEMENT 售价 (#PCDATA)>
    • 在需要编写的XML文件中导入该DTD约束文档,<!DOCTYPE 书架 SYSTEM "文件路径">

    • 然后XML文件,就必须按照DTD约束文档指定的格式进行编写,否则报错!

    • 注意:不能约束具体的数据类型

  5. XML文档约束-schema的使用步骤:

    • 编写schema约束文档,后缀名必须是.xsd
    • 在需要编写的XML文件中导入该schema约束文档
    • 按照约束内容编写XML文件的标签

日志技术

概述

  1. 什么是日志?
    • 好比生活中的日记,可以记录你生活中的点点滴滴
    • 程序中的日志,通常就是一个文件夹,里面记录的是程序运行过程中的各种信息
  2. 日志技术
    • 可以将系统执行的信息,方便的记录到指定的位置(控制台、文件中、数据库中)
    • 可以随时以开关的形式控制日志的启停,无需侵入到源代码中去进行修改

日志技术的体系

1
2
3
4
5
6
7
8
9
graph LR
A(日志技术) --> B["JUL(java.util.logging)"]
A --> Log4j
A --> Logback
A --> 其他实现

C(日志接口) -->D["Commons Logging(JCL)"]
C --> E["Simple Logging Facade for Java(SLF4J)"]

  1. 日志框架:牛人或者第三方公司以及准备好的实现代码,后来者直接可以拿去使用
  2. 日志接口:设计日志框架的一套标准,日志框架需要实现这些接口
  3. 注意1:因为对JCL接口不满意,有人就搞了SLF4J;因为对Log4j的性能不满意,有人就搞了Logback
  4. 注意2:Logback是基于SLF4J的日志规范实现的框架

Logback日志框架

介绍

  1. Logback日志框架官方网站:https://logback.qos.ch/index.html
  2. Logback日志框架有以下几个模块
    • Logback-core:基础模块,是其他两个模块依赖的基础(必须有)
    • Logback-classic:完整实现了 slf4j API的模块(必须有)
    • Logback-access:与TomcatJettyServlet容器集成,以提供HTTP访问日志的功能(可选)
  3. 想使用Logback日志框架,至少需要在项目中整合如下三个模块:
    • slf4j-api:日志接口
    • logback-core
    • logbcak-classic

快速入门

  1. 实现步骤:

    • 导入Logback框架到项目中去。

      slf4j-api:日志接口logback-corelogbcak-classic

    • 将Logback框架的核心配置文件logback.xml直接拷贝到src目录下(必须是src下)

    • 创建Logback框架提供的Logger对象,然后用Logger对象调用其提供的方法就可以记录系统的日志信息

      public static final Logger LOGGER = LoggerFactory.getLogger("类名")

    • 注意:对Logback日志框架的控制,都是通过其核心配置文件logback.xml来实现的

  2. 核心配置文件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设置日志级别

  1. 认识日志级别

    • 日志级别指的是日志信息的类型,日志都会分级别,常见的日志级别如下(优先级依次升高):

      日志级别 说明
      trace 追踪,指明程序运行轨迹
      debug 调试,实际应用中一般将其作为最低级别,而trace则很少使用
      info 输出重要的运行信息,数据连接、网络连接、IO操作等等,使用较多
      warn 警告信息,可能发生发生问题,使用较多
      error 错误信息,使用较多
    • 只有日志级别是大于或等于核心配置文件配置的日志级别,才会被记录,否则不记录

      1
      2
      3
      4
      <root level="debug">
      <appender-ref ref="CONSOLE"/>
      <appender-ref ref="FILE" />
      </root>
  • Copyright: Copyright is owned by the author. For commercial reprints, please contact the author for authorization. For non-commercial reprints, please indicate the source.
  • Copyrights © 2023-2024 LittleWin
  • Visitors: | Views:

请我喝杯咖啡吧~

支付宝
微信