特殊文件处理
特殊文件
(框架源码用的多)
主要从三个方面学习
- 了解它们的特点、作用
- 学习使用程序读取它们里面的数据
- 学习使用程序把数据存储到这些文件里
properties属性文件
XML文件
都是放置键值对信息
二者对比,XML存储多个对象的信息非常方便,适合存储更加复杂的数据关系
properties属性文件
1. 特点、作用
都只能是键值对,键不能重复,文件后缀是.properties。用来存数据
2. 如何使用程序读取文件中的数据
2.1 第一种方法
自己写IO流代码来读取并解析(非常麻烦繁琐)
2.2 第二种方法
Properties对象
- 是一个Map集合(键值对集合),但是我们一般不会当集合使用
- 核心作用:Properties是用来代表属性文件的,通过Properties可以读写属性文件里的内容
构造器 | 说明 |
---|---|
public Properties() | 用于构建Properties集合对象(空容器) |
常用方法 | 说明 |
---|---|
public void load(InputStream is) | 通过字节输入流,读取属性文件里的键值对数据 |
public void load(Reader reader) | 通过字符输入流,读取属性文件里的键值对数据 |
public String getProperty(String key) | 根据键获取值(其实就是get方法的效果) |
public Set <String> stringPropertyNames() |
获取全部键的集合(其实就是keySet方法的效果) |
代码实现
1 | package com.ithzd.properties; |
3. 如何将数据存储进文件
常用方法 | 说明 |
---|---|
public Object setPropenty(String key,String value) | 保存键值对数据到Properties对象中去 |
public void store(OutputStream os,String comments) | 把键值对数据,通过字节输出流写出到属性文件里去 |
public void store(Write w,String comments) | 把键值对数据,通过字符输出流写出到属性文件里去 |
XML文件
了解XML文件的特点和作用
学习使用程序读取它里面的数据
把数据写到XML文件中去(开发中很少用)
XML文件概述
XML是可扩展标记语言,意思是它是由一些标签组成的,而这些标签是自己定义的。本质上一种数据格式,可以用来表示复杂的数据关系。
1. XML的特点
- XML中的”<标签名>”称为一个标签或一个元素,一般是成对出现的
- XML中的标签名可以自己定义(可扩展),但必须要正确的嵌套
- XML中只能有一个根标签
- XML中的标签可以有属性
- 如果一个文件中放置的是XML格式的数据,这个文件就是XML文件,后缀一般要写成.xml
2. XML语法规则
- XML文件的后缀名是.xml,文档声明必须是第一行
1
2
3
4
5<?xml version="1.0" encoding="UTF-8" ?>
<!-- 注释:以上抬头声明必须放在第一行,必须有 -->
version:XML默认的版本号码,该属性是必须存在的
encoding:本XML文件的编码
<!-- 根标签只能有一个 --> - **XML中像 **
<,>,&
等这些符号不能出现在标签的文本中,因为标签格式本身就有<>,会和标签格式冲突。- 如果标签文本中有这些特殊字符,需要用一些占位符代替。
1
2
3
4
5< 表示 < 小于
> 表示 > 大于
& 表示 & 和
' 表示 ' 单引号
" 表示 " 双引号
- 如果标签文本中有这些特殊字符,需要用一些占位符代替。
- XML中可以写一个叫CDATA的数据区:
<![CDATA[ 内容 ]]>
,里面随便写- 如果在标签文本中,出现大量的特殊字符,不想使用特殊字符,此时可以用CDATA区,格式如下
1
2
3
4
5<data1>
<![CDATA[
3 < 2 && 5 > 4
]]>
</data1>
- 如果在标签文本中,出现大量的特殊字符,不想使用特殊字符,此时可以用CDATA区,格式如下
3. XML文件的作用:
常用来做配置文件(比如动态sql),偶尔用来传输(传输基本都是json了)
XML解析
- IO流
- Dom4j框架(第三方开源框架)
导入Dom4j框架jar包步骤:- 先到官网下载
- 然后放到lib目录下,右键点击添加到库(Add as Library)(手动)
DOM4J解析XML文件的思想是:文档对象模型(意思是把整个XML文档、每一个标签、每一个属性都等都当做对象来看待)。
- Document对象表示整个XML文档
- Element对象表示标签(元素)
- Attribute对象表示属性
- 标签中的内容就是文本
- SAXReader:Dom4j提供的解析器,可以认为是代表整个Dom4j框架
构造器/方法 | 说明 |
---|---|
public SAXReader() | 构建Dom4j的解析器对象 |
public Document read(String url) | 把XML文件读成Document对象 |
public Document read(InputStream is) | 通过字节输入流读取XML文件 |
- Document
方法名 | 说明 |
---|---|
Element getRootElement() | 获得根元素对象 |
- 用根元素在获取到它里面的子元素(包括子标签、表属性等)
方法名 | 说明 |
---|---|
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(子元素名) | 得到指定名称的子元素文本 |
public String getText() | 得到文本 |
1 | public class Dom4JTest1 { |
评论