Java特殊文件

Properties

读取数据

java 复制代码
package com.itheima.d1;

import java.io.FileNotFoundException;
import java.io.FileReader;
import java.nio.charset.StandardCharsets;
import java.util.Properties;
import java.util.Set;

public class Test1 {
    public static void main(String[] args) throws Exception {
        //创建一个Properties的对象出来(键值对集合,空容器)
        Properties properties = new Properties();
        System.out.println(properties);

        //2、开始加载属性文件中的键值对实际到properties对象中去
        properties.load(new FileReader("wenjian\\src\\users.properties"));
        System.out.println(properties);

        //3、根据键取值
        System.out.println(properties.getProperty("小明"));
        System.out.println(properties.getProperty("admin"));

        //4、遍历全部的键和值
        Set<String> keys = properties.stringPropertyNames();
        for (String key : keys) {
            String value = properties.getProperty(key);
            System.out.println(key + "------>" + value);
        }

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

输入数据

java 复制代码
package com.itheima.d1;

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

public class Test2 {
    public static void main(String[] args) throws Exception {
        //1、创建Properties对象出来,先用他存储一些键值对数据
        Properties properties = new Properties();
        properties.setProperty("小明", "123456");
        properties.setProperty("小王", "123");
        properties.setProperty("小白", "666");

        //2、把properties对象中的键值对数据存入到属性文件里去
        properties.store(new FileWriter("wenjian/src/user.properties")
                ,"save");
    }
}

XML文件

概述

创建XML文件

复制代码
<?xml version="1.0" encoding="utf-8" ?>
<!--注释:以上抬头声明必须放在第一行,必须有-->
<!--跟标签-->
<users>
    <ueser> id="1"
        <name>小明</name>
        <sex>男</sex>
        <地址>学校</地址>
        <password>123456</password>
        <date> 3 &lt; 2 &amp;&amp; 5 > 4</date>
        <date1>
            <![CDATA[
            3 < 2 && 5 > 4
            ]]>
        </date1>
    </ueser>
    <ueser id="2">
        <name>小王</name>
        <sex>男</sex>
        <地址>图书馆</地址>
        <password>123</password>
        <date> 3 &lt; 2 &amp;&amp; 5 > 4</date>
    </ueser>
</users>

读取XML文件中的数据

注意:解析XML文件只能自上而下解析即先读取根元素对象再读取根元素对象之下的子元素对象

Element提供的方案

java 复制代码
package com.itheima.d2;

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.*;

import javax.xml.parsers.SAXParser;
import java.nio.charset.StandardCharsets;
import java.util.List;

public class Test1 {
    public static void main(String[] args) throws Exception {
        //1、创建一个Dom4j框架提供的解析对象
        SAXReader saxReader = new SAXReader();

        //2、使用saxReader对象把需要解析的XML文件读成一个Document对象
        Document document = saxReader.read("wenjian\\src\\helloworld.xml");

        //3、从文档对象中解析XML文件的全部数据
        Element root = document.getRootElement();
        System.out.println(root.getName());

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

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

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

        //6、如何获取元素的属性信息
        System.out.println(user.attributeValue("id"));
        Attribute id = user.attribute("id");
        System.out.println(id.getName());
        System.out.println(id.getValue());

        List<Attribute> attributes = user.attributes();
        for (Attribute attribute : attributes) {
            System.out.println(attribute.getName() + "=" + attribute.getValue());
        }

        //7、如何获取全部的文本内容:获取当前元素下的子元素文本值
        System.out.println(user.elementText("name"));
        System.out.println(user.elementText("地址"));
        System.out.println(user.elementText("password"));

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

把数据写入到XML中去

java 复制代码
package com.itheima.d2;

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

/**
 * 目标:如何使用程序把数据写出到XML文件中去。
 * <?xml version="1.0" encoding="UTF-8" ?>
 * <book>
 *     <name>Java从入门到入土</name>
 *     <autor>dlei</autor>
 *     <price>999.9</price>
 * </book>
 */
public class Test2 {
    public static void main(String[] args) {
        //1、使用一个StringBuilder对象来拼接XML格式的数据
        StringBuilder sb = new StringBuilder();
        sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n");
        sb.append("<book>\r\n");
        sb.append("\t<name>").append("Java从入门到入土").append("</name>\r\n");
        sb.append("\t<autor>").append("dlei").append("</autor>\r\n");
        sb.append("\t<price>").append(999.9).append("</price>\r\n");
        sb.append("</book>");

        try (
                BufferedWriter bufferedWriter =
                        new BufferedWriter(new FileWriter("wenjian/src/book1.xml"));
                ){

            bufferedWriter.write(sb.toString());
        } catch (Exception e) {
            e.printStackTrace();
        }
    }
}
java 复制代码
<?xml version="1.0" encoding="UTF-8" ?>
<book>
	<name>Java从入门到入土</name>
	<autor>dlei</autor>
	<price>999.9</price>
</book>

约束XML文件

不能约束具体的数据类型

相关推荐
疯狂的挖掘机6 分钟前
记一次基于QT的图片操作处理优化思路(包括在图上放大缩小,截图,画线,取值等)
开发语言·数据库·qt
cnxy18812 分钟前
围棋对弈Python程序开发完整指南:步骤4 - 提子逻辑和劫争规则实现
开发语言·python·机器学习
意趣新28 分钟前
C 语言源文件从编写完成到最终生成可执行文件的完整、详细过程
c语言·开发语言
TheSumSt42 分钟前
Python丨课程笔记Part3:语法进阶部分(控制结构与基础数据结构)
数据结构·笔记·python
.鸣1 小时前
set和map
java·学习
ha_lydms1 小时前
5、Spark函数_s/t
java·大数据·python·spark·数据处理·maxcompute·spark 函数
李艺为1 小时前
根据apk包名动态修改Android品牌与型号
android·开发语言
电商API&Tina2 小时前
跨境电商 API 对接指南:亚马逊 + 速卖通接口调用全流程
大数据·服务器·数据库·python·算法·json·图搜索算法
Yyyyy123jsjs2 小时前
外汇Tick数据交易时段详解与Python实战分析
人工智能·python·区块链
黄河滴滴2 小时前
java系统变卡变慢的原因是什么?从oom的角度分析
java·开发语言