一、特殊文本文件
为什么要用这些特殊文件?
存储多个用户的:用户名、密码
- 存储有关系的数据,做为系统的配置文件
- 做为信息进行传输
日志技术
- 把程序运行的信息,记录到文件中,方便程序员定位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日志框架进行控制的。
什么是日志级别?
日志级别指的是日志信息的类型,日志都会分级别,常见的日志级别如下(优先级依次升高):