Java:特殊文件详细解释(包含Dom4j下载和使用)

特殊文件:属性文件、XML文件

为什么要用这些特殊文件:

方便存储多个用户的用户名密码等等。

特殊文件主要学什么?

1.了解特点作用

2.学习使用程序读取它们里面的数据

3.学习使用程序把数据存储到这些文件里

特殊文件:

1.属性文件( .properties):

如果一个txt文件里存放的都是键值对数据,每个键值对占一行,也算是属性文件。

Java:特殊文件详细解释(包含Dom4j下载和使用)_第1张图片

Properties:

1.是一个Map集合(键值对集合),但是我们一般不会当集合使用。
2.核心作用:Properties是用来代表属性文件的,通过Properties可以读写属性文件里的内容。

使用Properties读取属性文件中的键值对数据:

Java:特殊文件详细解释(包含Dom4j下载和使用)_第2张图片

示例代码:

properties配置文件:

#以下是用户名和密码
admin=123456
张无忌=minmin
周芷若=wuji
package com.itheima.d1_properties;

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

public class PropertiesTest1 {
    public static void main(String[] args) throws IOException {
        Properties properties = new Properties();

        properties.load(new FileReader("helloworld-app\\src\\users.properties"));
        //对于properties文件,右击Copy Path 选择绝对路径,然后把D:\code\javasepro\\删掉,用相对路径即可。

        System.out.println(properties);
        //{admin=123456, 周芷若=wuji, 张无忌=minmin}
        System.out.println(properties.getProperty("admin"));//用键获取值  123456


        Set keys = properties.stringPropertyNames();//拿到所有键的集合
        for (String key: keys) {
            String value = properties.getProperty(key);
            System.out.println(key+"----->"+value);
            //admin----->123456
            //周芷若----->wuji
            //张无忌----->minmin
        }


    }

}

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

构造器同上,这里省略。

Java:特殊文件详细解释(包含Dom4j下载和使用)_第3张图片

这里属性文件可以不用提前创建。

示例代码:

package com.itheima.d1_properties;

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

public class PropertiesTest2 {
    public static void main(String[] args) throws IOException {
        Properties properties = new Properties();
        properties.setProperty("admin","123456");
        properties.setProperty("张三","654321");

        properties.store(new FileWriter("helloworld-app/src/users2.properties")
                , "l save many users");//这个文件不需要提前创建

    }
}

结果:

#l save many users
#Wed Jan 17 15:32:39 CST 2024
张三=654321
admin=123456

2.XML文件(.xml):

可扩展标记语言

特点:

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

XML中的标签名可以自己定义 (可扩展),但必须要正确的嵌套。
XML中只能有一个根标签

XML中的标签可以有属性
如果一个文件中放置的是XML格式的数据,这个文件就是XML文件,后缀一般要写成.xml。

IDEA创建xml文件:

Java:特殊文件详细解释(包含Dom4j下载和使用)_第4张图片

xml的格式:





    
        张无忌
        
        minmin
        3 < 2 && 5 > 4
        
             4
            ]]>
        
    
    很多人
    
        敏敏
        
        wuji
        3 < 2 && 5 > 4
        
             4
            ]]>
        
    

这里注意data和data1标签里的内容写法:

Java:特殊文件详细解释(包含Dom4j下载和使用)_第5张图片

快捷写法:敲CD回车即可--------比特殊字符代替更简洁。

解析xml文件(读取数据):

程序员并不需要自己写原始的IO流代码来解析XML,难度较大!也相当繁琐!

其实,有很多开源的,好用的,解析XML的框架,最知名的是: Dom4j(第三方研发的)

使用过程(详细解释):

Java:特殊文件详细解释(包含Dom4j下载和使用)_第6张图片

打开下载Maven Repository: org.dom4j » dom4j » 2.1.3 (mvnrepository.com)icon-default.png?t=N7T8https://mvnrepository.com/artifact/org.dom4j/dom4j/2.1.3点击jar开始下载:

下载完复制此文件,打开IDEA,右击你的项目-New-Directory,起名为lib,一般都起名为lib,点击lib,ctrl+v,把文件粘贴进来,右击jar包,点击Add as Library -> 点击ok即可。

类中导包使用,这个不用管,IDEA自动帮你导。

Dom4j解析思想:

Dom4j通过SAXReader解析器解析成Document文档,然后就可以获取到我们想要的内容了。

Java:特殊文件详细解释(包含Dom4j下载和使用)_第7张图片

构造器和方法:

Java:特殊文件详细解释(包含Dom4j下载和使用)_第8张图片

Java:特殊文件详细解释(包含Dom4j下载和使用)_第9张图片

Java:特殊文件详细解释(包含Dom4j下载和使用)_第10张图片

示例代码:

xml配置文件:





    
        张无忌
        
        minmin
        3 < 2 && 5 > 4
        
             4
            ]]>
        
    
    很多人
    
        敏敏
        
        wuji
        3 < 2 && 5 > 4
        
             4
            ]]>
        
    
package com.itheima.d2_xml;

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

import java.util.List;

/**
 * 掌握使用Dom4j框架解析XML文件
 */
public class Dom4JTest1 {
    public static void main(String[] args) throws DocumentException {
        SAXReader saxReader = new SAXReader();
        //用相对路径
        Document document = saxReader.read("helloworld-app\\src\\helloworld.xml");
        //拿根元素
       Element root = document.getRootElement();
        System.out.println(root.getName());//users

        //获取根元素下全部一级子元素
        List elements = root.elements();
        for (Element element : elements) {
            System.out.println(element.getName());
        }

        //获取当前元素下的某个子元素
        Element people = root.element("people");
        System.out.println(people.getText());


        //如果下面有很多子元素user,默认获取第一个
        Element user = root.element("user");
        System.out.println(user.elementText("name"));//张无忌



        //获取元素属性信息
        System.out.println(user.attributeValue("id"));//1

        Element data = user.element("data");
        System.out.println(data.getTextTrim());//取出文本去除前后空格


    }
}

把数据写出到XML文件中:

这里不建议使用Dom4j

推荐直接把程序里的数据拼接成XML格式 ,然后用IO流写出去 !

示例代码:

把数据写出到某个XML文件,这个文件不需要提前创建,会帮你自动创建。

package com.itheima.d2_xml;

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

/**
 * 目标:如何使用程序把数据写出到 XML文件中去。
 * 
 * 
 *     从入门到跑路
 *     dlei
 *     999.9
 * 
 */
public class Dom4JTest2 {
    public static void main(String[] args) {
        // 1、使用一个StringBuilder对象来拼接XML格式的数据。
        StringBuilder sb = new StringBuilder();
        sb.append("\r\n");
        sb.append("\r\n");
        sb.append("\t").append("从入门到跑路").append("\r\n");
        sb.append("\t").append("dlei").append("\r\n");
        sb.append("\t").append(999.99).append("\r\n");
        sb.append("");

        try (BufferedWriter bw = new BufferedWriter(new FileWriter("helloworld-app\\src\\book.xml"));)
        {
            bw.write(sb.toString());
        } catch (IOException e) {
            e.printStackTrace();
        }


    }
}

你可能感兴趣的:(java,java,eclipse,spring,maven,intellij-idea,tomcat,mybatis)