Java中特殊文件

一:Properties

1.是一个Map集合(键值对集合),但是我们一般不会当集合使用。

2.核心作用:Properties是用来代表属性文件的,通过Properties可以读写属性文件里的内容。

3.使用Properties读取属性文件里的键值对数据

构造器:

Properties() 用于构建Properties集合对象(空容器)

方法:

load(InputStream is) 通过字节输入流,读取属性文件里的键值对数据

load(Reader reader) 通过字符输入流,读取属性文件里的键值对数据

getProperty(String key) 根据键获取值(其实就是get方法的效果)

set<String> StringPropertyNames() 获取全部键的集合(其实就是keySet方法的效果)

import java.io.FileReader;
import java.util.Properties;
import java.util.Set;

public class Test1 {
    public static void main(String[] args) throws Exception {
        Properties properties = new Properties();
        properties.load(new FileReader("SpecialFileAndClander\\User.properties"));
        Set<String> key = properties.stringPropertyNames();
        for (String s : key) {
            String property = properties.getProperty(s);
            System.out.println(s +"----->"+property);
        }

        properties.forEach((v,s) -> System.out.println(v+"---->"+s));
    }
}

使用Properties把键值对数据写出到属性文件里去

构造器:

Properties() 用于构建Properties集合对象(空容器)

方法:

setProperty(String key, String value) 保存键值对数据到Properties对象中去。

store(OutputStream os, String comments) 把键值对数据,通过字节输出流写出到属性文件里去

store(Writer w, String comments) 把键值对数据,通过字符输出流写出到属性文件里去

import java.io.FileWriter;
import java.util.Properties;

public class Test2 {
    public static void main(String[] args) throws Exception {
        Properties properties = new Properties();
        properties.setProperty("蔡建宇", "455");
        properties.setProperty("余洋", "555");
        properties.setProperty("杨博铭", "655");
        properties.store(new FileWriter("SpecialFileAndClander\\what"), "success");
    }
}

二:XML(全称EXtensible Markup Language,可扩展标记语言)

1.本质是一种数据的格式,可以用来存储复杂的数据结构,和数据关系。

2.XML的特点

①XML中的"<标签名>"称为一个标签或一个元素,一般是成对出现的。

②XML中的标签名可自己定义(可扩展),但必须要正确的嵌套。

③XML中只能有一个根标签。

④XML中的标签可以有属性。

3.XML的语法规则

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

<?xml version="1.0" encoding="UTF-8" ?>

version:XML默认的版本号码,该属性是必须存在的

encoding:本XML文件的编码

②XML中可以定义的注释信息:<!--注释内容-->

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

&lt; < 小于 &gt; > 大于 &amp; & 和号 &apos; ' 单引号 &quot; " 引号

④XML中可以写一个叫CDATA的数据区:<![CDATA[ ...内容... ]]>, 里面的内容可以随便写。

4.XML的作用和应用场景

①本质是一种数据格式,可以存储复杂的数据结构,和数据关系。

②应用场景:经常用来做为系统的配置文件;或者作为一种特殊的数据结构,在网络中进行传输。

5.示例:

<?xml version="1.0" encoding="UTF-8" ?>
<users>
  <user id="1">
    <name>蔡建宇</name>
    <age>19</age>
    <address>湖北</address>
    <character>皮</character>
    <data>5 &lt; 3 &amp;&amp; 4 &gt; 2</data>
    <data2>
      <![CDATA[
      5 < 2  SAD dADWASD
      ]]>
    </data2>
  </user>>
  <user id="2">
    <name>王凯</name>
    <age>18</age>
    <address>新疆</address>
    <character>瘦</character>
    <data>
      5 &lt; 3 &amp;&amp; 4 &gt; 2
    </data>
  </user>
</users>

三:解析XML(Dom4j解析XML-得到Document对象)

1.SAXReader:Dom4j提供的解析器,可以认为是代表整个Dom4j框架

构造器:

SAXReader() 构建Dom4j的解析器对象

read(String url) 把XML文件解读成Doucunment对象

read(InputStream is) 通过字节输入流读取XML文件

2.Document

方法:

getRootElement() 获取根元素对象

3.Element提供的方法

getName() 得到元素名字

getValue() 得到元素的属性值

elements() 得到当前元素下的所有子元素

elements(String name) 得到当前元素下指定名字的子元素返回集合

element(String name) 得到当前元素下指定名字的子元素,如果有很多名字相同的返回第一个

attributeValue(String name) 通过属性名直接得到属性值

elementText(子元素名) 得到指定名称的子元素的文本

getText() 得到文本

getTextTrim() 取出文本去除前后空格

3.示例:

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;

import java.util.List;

public class Test3 {
    public static void main(String[] args) throws Exception {
        SAXReader saxReader = new SAXReader();

        Document read = saxReader.read("SpecialFileAndClander\\src\\TEST1\\First.xml");

        Element root = read.getRootElement();

        System.out.println(root.getName());

        List<Element> users = root.elements();

        for (Element user__ : users) {
            List<Element> user_ = user__.elements();
            for (Element user : user_) {
                System.out.println(user.getName());
            }
        }

        Element user = root.element("user");

        System.out.println(user.attributeValue("id"));

        Attribute id = user.attribute("id");
        System.out.println(id.getName());
        System.out.println(id.getValue());

        System.out.println(user.elementText("age"));

        Element data = user.element("data");//对于含有特殊符号的需要先转换为文本后才能得到其正确的形式
        System.out.println(data.getText());


    }
}

---------------------------------------------------------------------------------------补充

对于使用程序把数据写出到XML文件中去,不建议使用dom4j做,推荐直接把程序里的数据拼接成XML格式,然后用IO流写出去!

import java.io.BufferedWriter;
import java.io.FileWriter;

public class Test4 {
    public static void main(String[] args) {
        StringBuffer st = new StringBuffer();
        st.append("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n");
        st.append("<book>\r\n");
        st.append("\t<name>").append("吞噬星空").append("</name>\r\n");
        st.append("\t<author>").append("不吃西红柿").append("</author>\r\n");
        st.append("\t<price>").append(188.8).append("</price>\r\n");
        st.append("</book>");

        try(BufferedWriter bw = new BufferedWriter(new FileWriter("SpecialFileAndClander\\src\\TEST1\\Second.xml"));) {
            bw.write(st.toString());
        } catch (Exception e) {
            throw new RuntimeException(e);
        }
    }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值