特殊文件、日志技术 一、属性文件1.1 特殊文件概述同学们前面我们学习了IO流我们知道IO流是用来读、写文件中的数据。但是我们接触到的文件都是普通的文本文件普通的文本文件里面的数据是没有任何格式规范的用户可以随意编写如下图所示。像这种普通的文本文件没有任何规律可言不方便程序对文件中的数据信息处理。在以后的Java开发过程中还会遇到一些特殊的文本文件这些文件是有一些格式要求的方便程序对文件中的数据进行处理。比如后面我们会用到两种特殊的文本文件一种是properties文件还有一种是xml文件。如下图所示。后缀为.properties的文件称之为属性文件它可以很方便的存储一些类似于键值对的数据。经常当做软件的配置文件使用。而xml文件能够表示更加复杂的数据关系比如要表示多个用户的用户名、密码、家乡、性别等。在后面也经常当做软件的配置文件使用。现在学习特殊的文件主要学习什么呢 主要学习以下的三点1.2 Properties属性文件接下来我们先学习Properties这种属性文件。首先我们要掌握属性文件的格式属性文件后缀以.properties结尾属性文件里面的每一行都是一个键值对键和值中间用隔开。比如:admin123456#表示这样是注释信息是用来解释这一行配置是什么意思。每一行末尾不要习惯性加分号以及空格等字符不然会把分号空格会当做值的一部分。键不能重复值可以重复如下图所示接下来我们学习如何读取属性文件中的数据。这里需要给同学们介绍一个来叫Properties.1.Properties是什么 Properties是Map接口下面的一个实现类所以Properties也是一种双列集合用来存储键值对。但是一般不会把它当做集合来使用。 2.Properties核心作用 Properties类的对象用来表示属性文件可以用来读取属性文件中的键值对。使用Properties读取属性文件中的键值对需要用到的方法如下。实用Properties读取属性文件的步骤如下1、创建一个Properties的对象出来键值对集合空容器2、调用load(字符输入流/字节输入流)方法开始加载属性文件中的键值对数据到properties对象中去3、调用getProperty(键)方法根据键取值/** * 目标掌握使用Properties类读取属性文件中的键值对信息。 */ public class PropertiesTest1 { public static void main(String[] args) throws Exception { // 1. 创建一个Properties的对象出来键值对集合空容器 Properties properties new Properties(); System.out.println(properties); // 2. 开始加载属性文件中的键值对数据到properties对象中去 properties.load(new FileReader(day13_properties_xml\\src\\users.properties)); System.out.println(properties); // 3. 根据键取值 System.out.println(properties.getProperty(liuyan)); System.out.println(properties.getProperty(宝强)); // 4. 遍历全部的键和值。 // 获取键的集合 SetString keys properties.stringPropertyNames(); for (String key : keys) { // 再根据键获取值 String value properties.getProperty(key); System.out.println(key value); } System.out.println(------------------); properties.forEach((k, v) - { System.out.println(k v); }); } }使用Properties往属性文件中写键值对需要用到的方法如下往Properties属性文件中写键值对的步骤如下1、先准备一个.properties属性文件按照格式写几个键值对2、创建Properties对象出来3、调用setProperty存储一些键值对数据4、调用store(字符输出流/字节输出流, 注释)将Properties集合中的键和值写到文件中注意第二个参数是注释必须得加先准备一个users.properties属性文件如下图所示# 以下内容都是用户名和密码 admin123456 liuyan110120 liutao110119 宝强120119接下来编写代码读取上面的属性文件。代码如下public class PropertiesTest2 { public static void main(String[] args) throws Exception { // 1. 创建Properties对象出来先用它存储一些键值对数据 Properties properties new Properties(); properties.setProperty(张无忌, minmin); properties.setProperty(殷素素, cuishan); properties.setProperty(张翠山, susu); // 2. 把properties对象中的键值对数据存入到属性文件中去 properties.store(new FileWriter(day13_properties_xml\\src\\users2.properties) , i saved many users!); } }运行上面的代码user2.properties配置文件打开效果如下图所示。二、XML文件同学们在上一节我们学习了properties属性文件。接下来我们再学习一种在开发中经常使用的文件叫做xml文件。我们先来给同学们介绍一下什么是xml文件然后再来学习如何读取xml文件中的数据。2.1 XML文件概述首先我们来认识一下什么是XMLXML是可扩展的标记语言意思是它是由一些标签组成的而这些标签是自己定义的。本质上一种数据格式可以用来表示复杂的数据关系。XML文件有如下的特点XML中的标签名称为一个标签或者一个元素一般是成对出现的。XML中的标签名可以自己定义可扩展但是必须要正确的嵌套XML中只能有一个根标签。XML标签中可以有属性XML必须第一行有一个文档声明格式是固定的?xml version1.0 encodingUTF-8?XML文件必须是以.xml为后缀结尾如下图所示:?xml version1.0 encodingUTF-8 ? !-- 注释以上抬头声明必须放在第一行必须有 -- !-- 根标签只能有一个 -- users user id1 desc第一个用户 name柳岩/name sex女/sex 地址 湖南 /地址 password123456/password data 3 lt; 2 amp;amp; 5 4 /data data1 ![CDATA[ 3 2 5 4 ]] /data1 /user people很多人/people user id2 name宝强/name sex男/sex 地址保定/地址 password123456/password data 3 lt; 2 amp;amp; 5 4 /data data1 ![CDATA[ 3 2 5 4 ]] /data1 /user /users上面XML文件中的数据格式是最为常见的标签有属性、文本、还有合理的嵌套。XML文件中除了写以上的数据格式之外还有一些特殊的字符不能直接写。像,,等这些符号不能出现在标签的文本中因为标签格式本身就有会和标签格式冲突。如果标签文本中有这些特殊字符需要用一些占位符代替。lt; 表示 gt; 表示 amp; 表示 apos; 表示 quot; 表示 data 3 lt; 2 amp;amp; 5 gt; 4 /data如果在标签文本中出现大量的特殊字符不想使用特殊字符此时可以用CDATA区格式如下data1![CDATA[3 2 5 4]]/data1最后给同学们聊聊XML在实际开发中有什么作用