一、特殊文本文件
为什么要用这些特殊文件?
存储多个用户的:用户名、密码
- 存储有关系的数据,做为系统的配置文件
- 做为信息进行传输
日志技术
- 把程序运行的信息,记录到文件中,方便程序员定位bug、并了解程序的执行情况等
1. Properties
- 是一个Map集合(键值对集合),但是我们一般不会当集合使用。
- 核心作用:Properties是用来代表属性文件的,通过Properties可以读写属性文件里的内容
package com.file;import java.io.FileReader;
import java.io.IOException;
import java.util.Properties;
import java.util.Set;public class FileTest24 {public static void main(String[] args) throws IOException {Properties properties = new Properties();System.out.println(properties);
// FileInputStream fileInputStream = new FileInputStream("day07/src/users.properties");
// InputStreamReader inputStreamReader = new InputStreamReader(fileInputStream);
// BufferedReader bufferedReader = new BufferedReader(inputStreamReader);FileReader fileReader = new FileReader("day07/src/users.properties");properties.load(fileReader);System.out.println(properties);System.out.println(properties.getProperty("sdf"));System.out.println(properties.getProperty("士大夫"));Set<String> strings = properties.stringPropertyNames();for (String string : strings) {String property = properties.getProperty(string);System.out.println(string+"->"+property);}properties.forEach((k,v)->{System.out.println(k+"->"+v);});};
}
2. XML(全称EXtensibleMarkupLanguage,可扩展标记语言)
特点:
- 本质是一种数据的格式,可以用来存储复杂的数据结构,和数据关系。
- XML中的“<标签名>”称为一个标签或一个元素,一般是成对出现的。
- XML中只能有一个根标签。
- XML中的标签可以有属性。
- 如果一个文件中放置的是XML格式的数据,这个文件就是XML文件,后一般要写成.xml。
XML的创建
就是创建一个XML类型的文件,要求文件的后缀必须使用xml,如hello_world.xml
XML的作用和应用场景
- 本质是一种数据格式,可以存储复杂的数据结构,和数据关系。
- 应用场景:经常用来做为系统的配置文件;或者作为一种特殊的数据结构,在网络中进行传输。
解析XML文件
使用程序读取XML文件中的数据
注意:程序员并不需要自己写原始的I0流代码来解析XML,难度较大!也相当繁琐!
其实,有很多开源的,好用的,解析XML的框架,最知名的是:Dom4j(第三方研发的)
package com.test;import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import org.xml.sax.SAXException;import java.util.List;
import java.util.function.Consumer;public class XMLFileTest {public static void main(String[] args) throws SAXException, DocumentException {//1.创建一个Dom4j框架提供的解析器对象SAXReader saxReader = new SAXReader();//2.使用saxReader对象把需要解析的SML文件读成一个Document对象。Document read = saxReader.read("Day17\\src\\helloworld.xml");//3.从文档对象中解析XML文件的全部数据了Element rootElement = read.getRootElement();System.out.println(rootElement.getName());//4.获取根元素下的全部一级子元素List<Element> elements = rootElement.elements();List<Element> elements1 = rootElement.elements("user");elements.forEach(element->System.out.println(element.getName()));System.out.println("------");elements1.forEach(element->System.out.println(element.getName()));//5.获取当前元素下的某个子元素Element people = rootElement.element("people");System.out.println(people.getText());//6.如果下面有很多子元素user,默认获取第一个Element user = rootElement.element("user");String name = user.elementText("name");System.out.println(name);//7.获取元素的属性信息String id = user.attributeValue("id");System.out.println(id);Attribute id1 = user.attribute("id");System.out.println(id1.getName());System.out.println(id1.getValue());List<Attribute> attributes = user.attributes();attributes.forEach(attribute -> System.out.println(attribute.getName()+"="+attribute.getValue()));//8.获取全部的文本内容:获取当前元素下的子元素文本值String name1 = user.elementText("name");String address = user.elementText("address");Element data = user.element("Data");System.out.println(data.getText());System.out.println(data.getTextTrim()); //去除前后空格}
}
如何使用程序把数据写出到XL文件中去?
不建议用dom4j做
推荐直接把程序里的数据拼接成XML格式,然后用I流写出去!
package com.test;import java.io.BufferedWriter;
import java.io.FileWriter;
import java.io.IOException;public class XMLTest1 {public static void main(String[] args) throws IOException {StringBuilder stringBuilder = new StringBuilder();stringBuilder.append("<?xml version=\"1.0\"encoding=\"UTF-8\"?>\r\n");stringBuilder.append("<user></user>\r\n");try(BufferedWriter bw = new BufferedWriter(new FileWriter("Day17\\src\\h.xml"));){bw.write(stringBuilder.toString());}catch (Exception e){e.printStackTrace();}}
}
什么是约束XML文件的书写?
就是限制XML文件只能按照某种格式进行书写
约束文档
专门用来限制xml书写格式的文档,比如:限制标签、属性应该怎么写。
约束文档的分类
- DTD文档
- Schema文档
二、日志技术
程序中的日志,通常就是一个文件,里面记录的是程序运行过程中的各种信息。
1. 日志技术
- 可以将系统执行的信息,方便的记录到指定的位置(控制台、文件中、数据库中)。
- 可以随时以开关的形式控制日志的启停,无需侵入到源代码中去进行修改。
注意:对Logback日志框架的控制,都是通过其核心配置文件logback.xml来实现的
核心配置文件logback.xml
对Logback日志框架进行控制的。
什么是日志级别?
日志级别指的是日志信息的类型,日志都会分级别,常见的日志级别如下(优先级依次升高):