Java 特殊文件、 properties文件、xml文件

一. 属性文件.properties

        1. #注释

        2. 内容都是一些键值对信息,每行都是一个键值对;键不能重复;

        3. 属性文件的后缀一般都是properties结尾

        4. 使用程序读取properties属性文件里面的数据

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

                (2) Properties是用来代表属性文件的,通过Properties可以读写属性文件里的内容

构造器说明
public Properties()用于构建Properties集合对象(空容器)
常用方法说明
public void load(InputStream is)通过字节输入流,读取属性文件里的键值对数据
public void load(Reader reader)通过字符输入流,读取属性文件里的键值对数据
public String getProperty(String key)根据键获取值
public Set<String> stringPropertyNames()获取全部键的集合

#users.properties

# 用户名和密码

admin=159357
kasha=asdfghjkl
taitan=poiuytrewq


public static void main(String[] args) {
        //public Properties()	用于构建Properties集合对象(空容器)
        Properties prop = new Properties();

        try (
                Reader reader = new FileReader("wenjian_04\\src\\com\\wyyzs\\day01\\users.properties");
                ){
                //public void load(InputStream is)	通过字节输入流,读取属性文件里的键值对数据
                //public void load(Reader reader)	通过字符输入流,读取属性文件里的键值对数据
                prop.load(reader);

                //public String getProperty(String key)	根据键获取值
                String name = prop.getProperty("admin");
                System.out.println(name);

                //public Set<String> stringPropertyNames()	获取全部键的集合
                Set<String> set = prop.stringPropertyNames();
                for(String key : set){
                    System.out.println(key + "=" + prop.getProperty(key));
                }

                prop.forEach((k, v) -> System.out.println(k + "=" + v));
        } catch (Exception e) {
            e.printStackTrace();
        }

}

        5. 使用程序把数据存储到properties属性文件里        

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

                (2) Properties是用来代表属性文件的,通过Properties可以读写属性文件里的内容

构造器说明
public Properties()用于构建Properties集合对象(空容器)
常用方法说明
public Object setProperty(String key, String value)保存键值对数据到Properties对象中
public void store(OutputStream os. String comments)把键值对数据,通过字节输出流写到属性文件中,comments为注释信息
public void sotre(Writer w, String comments)把键值对数据,通过字符输出流写到属性文件中,comments为注释信息
public static void main(String[] args) throws IOException {
        //使用程序把数据存储到properties属性文件里

        //public Properties()	用于构建Properties集合对象(空容器)
        //public Object setProperty(String key, String value)	保存键值对数据到Properties对象中
        Properties prop = new Properties();
        prop.setProperty("卡莎", "1526");
        prop.setProperty("泰坦", "8521");
        prop.setProperty("伊泽", "9654");
        prop.setProperty("璐璐", "1547");

        //public void store(OutputStream os. String comments)	把键值对数据,通过字节输出流写到属性文件中 comments为注释信息
        //public void sotre(Writer w, String comments)	把键值对数据,通过字符输出流写到属性文件中 comments为注释信息
        Writer writer = new FileWriter("wenjian_04\\src\\com\\wyyzs\\day01\\users2.properties");//文件自动生成
        prop.store(writer, "用户名密码");


}

二. XML文件

        1. XML(全称EXtensible Markup Language, 可扩展标记语言);本质是一种数据格式们可以用来存储复杂的数据结构和数据关系。经常用来作为系统的配置文件;或者作为一种特殊的数据结构,在网络中传输

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

        3. XML中的标签名是可以自己定义的(可扩展),但必须正确的嵌套

        4. XML中只能有一个根标签

        5. XML中的标签可以有属性

        6. XML文件的创建

        7. XML的语法规则

                (1) XML文件的后缀名为:.xml,文档声明必须是第一行;version 是XML默认的版本号 该属性必须存在 encoding是该xml文件的编码     

                (2) XML中可以定义注释信息 :<!--注释内容-->

                (3) XML中书写“<”、“&”等符号,可能会出现冲突导致报错,可以使用以下特殊字符替代

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

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

<?xml version="1.0" encoding="UTF-8" ?>
<!-- 第一行必须放 xml声明 -->


<!-- 根标签只能有一个 -->
<users>
    <user id = "1">
        <name>卡莎</name>
        <sex>女</sex>
        <age>18</age>
        <data>2 &lt; 3 &amp;&amp; 5 &gt; 4</data>
        <data1>
            <![CDATA[
                3 < 2 && 5 > 4
            ]]>
        </data1>
    </user>

    <user id = "2">
        <name>泰坦</name>
        <sex>男</sex>
        <age>17</age>
        <data>2 &lt; 3 &amp;&amp; 5 &gt; 4</data>
        <data1>
            <![CDATA[
                3 < 2 && 5 > 4
            ]]>
        </data1>
    </user>

</users>

        8. 解析XML文件:Dom4j(第三方框架)

                (1) 程序员并不需要自己写原始的IO流来解析XML文件,难度较大,过程繁琐!可以使用解析XML的框架:最知名的是:Dom4j(第三方框架)

        9. 使用程序解析XML文件        

                Dom4j解析XML-得到Document对象

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

构造器说明
public SAXReader()构建Dom4j的解析器对象
public Document read(String url)把XML文件读成Document对象
public Document read(InputStream is )通过字节输入流读取XML文件

                (2) Document

方法名说明
Element getRootElenent()获取根元素对象
方法名说明
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()得到文本
public static void main(String[] args) throws Exception {
        //解析xml文件

        //public SAXReader() 构建Dom4j的解析器对象
        SAXReader saxReader = new SAXReader();

        //public Document read(String url)	把XML文件读成Document对象
        //public Document read(InputStream is )	通过字节输入流读取XML文件
        Document document = saxReader.read("wenjian_04\\src\\com\\wyyzs\\day01\\qwe.xml");

        //Eleement getRootElenent()	获取根元素对象
        Element root = document.getRootElement();

        //public String getName()	获取元素名字
        System.out.println(root.getName());//users

        //public List<Element> elements()	获取当前元素下的所有一级子元素
        List<Element> list = root.elements();
        for (Element e : list) {
            System.out.println(e.getName());//user qrt user
        }


        //public List<Element> elements(String name)	获取当前元素下指定名字的子元素返回集合
        List<Element> list1 = root.elements("user");
        for (Element e : list1) {
            System.out.println(e.getName());//user user
        }

        //public Element element(String name)	获取当前元素下指定名字的子元素,如果存在多个名字相同的返回第一个
        Element element = root.element("qrt");
        System.out.println(element.getName());//qrt

        //如果存在多个名字相同的返回第一个
        Element user1 = root.element("user");
        System.out.println(user1.elementText("name"));//卡莎

        //public String attributeValue(String name)	通过属性名得到属性值
        String attributeValue =  user1.attributeValue("id");
        System.out.println(attributeValue);//1
        Attribute attribute = user1.attribute("id");
        System.out.println(attribute.getName());//id
        System.out.println(attribute.getValue());//1

        //获取所有属性
        List<Attribute> list2 = user1.attributes();
        for (Attribute a : list2) {
            System.out.println(a.getName() + "-->" + a.getValue());//id-->1 desc-->one
        }

        //public String elementText(子元素名)	获取指定名称的子元素文本
        System.out.println(user1.elementText("name"));//卡莎
        System.out.println(user1.elementText("sex"));//女
        System.out.println(user1.elementText("age"));//18
        System.out.println(user1.elementText("data"));//2 < 3 && 5 > 4
        System.out.println(user1.elementText("data1"));//3 < 2 && 5 > 4

        //public String getText()	得到文本
        Element data = user1.element("data");
        System.out.println(data.getText());//2 < 3 && 5 > 4
        System.out.println(data.getTextTrim());//2 < 3 && 5 > 4 去除空格
}

        10. XML的生成、约束

                (1) 如何使用程序把数据写的XML文件中--不建议使用dom4j,推荐直接把程序里的数据拼接成XML格式、然后用IO流写出去。

public static void main(String[] args) {
        //生成xml文件

        //使用StringBuilder对象来拼接XML的格式
        StringBuilder stringBuilder = new StringBuilder();
        stringBuilder.append("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>\r\n");
        stringBuilder.append("<root>\r\n");
        stringBuilder.append("\t<name>").append("卡莎").append("</name>\r\n");
        stringBuilder.append("\t<age>20</age>\r\n");
        stringBuilder.append("\t<sex>").append("女").append("</sex>\r\n");
        stringBuilder.append("</root>");

        try (
                BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("wenjian_04\\src\\com\\wyyzs\\day01\\root.xml"));
                ){
            bufferedWriter.write(stringBuilder.toString());

        } catch (Exception e) {
            e.printStackTrace();
        }
}

                (2) 约束XML文件的书写:就是限制XML文件只能按照某种格式进行编写。

                (3) 约束文档:专门用来限制xml书写格式的文档,比如:限制标签、属性应该怎么写;约束文档的分类:

                        ① DTD文档:不能约束具体的数据类型

                                a. 编写DTD约束文档,后缀必须是.dtd

                                b. 在需要编写的xml文件中导入该DTD约束文档

                                c. 然后xml文件就必须按照DTD约束文档指定的格式进行编写,否则报错

//root.xml内容

<!ELEMENT roots (root+)>
<!ELEMENT root (name, age, sex, password)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
<!ELEMENT sex (#PCDATA)>
<!ELEMENT password (#PCDATA)>


//xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<!DOCTYPE roots SYSTEM "root.dtd">
<roots>
	<root>
		<name>卡莎</name>
		<age>20</age>
		<sex>女</sex>
		<password>74125852</password>
	</root>

</roots>

                        ② Schema文档:能约束具体的数据类型

                                a. 编写schema约束文档,后缀必须是.xds

                                b. 在需要编写的xml文件中导入该schema约束文档

                                c. 按照约束内容编写XML文件中标签

//xsd文档

<?xml version="1.0" encoding="UTF-8" ?>
<schema xmlns="http://www.w3.org/2001/XMLSchema"
        targetNamespace="D:\JavaCode\wenjian_04\src\com\wyyzs\day01\xml\"
        elementFormDefault="qualified" >
    <!-- targetNamespace:中约束文档的地址(命名空间) -->
    <element name="roots">
        <!-- 子元素 -->
        <complexType>
            <!-- maxOccurs="unbounded" roots下的子元素可以有任意多个 -->
            <sequence maxOccurs="unbounded">
                <element name="root">
                    <complexType>
                        <sequence>
                            <element name = "name" type="string" />
                            <element name = "age" type="string" />
                            <element name = "sex" type="string" />
                            <element name = "password" type="string" />
                        </sequence>
                    </complexType>
                </element>
            </sequence>
        </complexType>
    </element>
</schema>


// xml文件

<?xml version="1.0" encoding="UTF-8" ?>
<roots xmlns = "D:\JavaCode\wenjian_04\src\com\wyyzs\day01\xml\"
        xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:schemaLocation = "D:\JavaCode\wenjian_04\src\com\wyyzs\day01\xml root1.xsd">
    <!-- xmlns = "D:\JavaCode" 基本位置
    xsi:schemaLocation D:\JavaCode\wenjian_04\src\com\wyyzs\day01\xml root1.xsd-->
    <root>
        <name>卡莎</name>
        <age>20</age>
        <sex>女</sex>
        <password>74125852</password>
        <!-- <ss></ss>  格式不对会报错-->
    </root>

</roots>

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/956674.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

抽象设计如何提升用户体验?

抽象设计在网页设计中可以通过多种方式提升用户体验&#xff0c;以下是具体的应用和作用&#xff1a; 一、增强视觉吸引力 视觉冲击力&#xff1a;抽象元素往往具有强烈的视觉冲击力&#xff0c;能够迅速吸引用户的注意力。通过大胆的色彩、不寻常的形状和丰富的纹理&#xff…

MATLAB中while循环例子,for循环嵌套例子

while循环例子 for循环解决斐波那契数列 for循环嵌套例子 注意最后都有 e n d end end

行人识别检测数据集,yolo格式,PASICAL VOC XML,COCO JSON,darknet等格式的标注都支持,准确识别率可达99.5%

作者简介&#xff1a; 高科&#xff0c;先后在 IBM PlatformComputing从事网格计算&#xff0c;淘米网&#xff0c;网易从事游戏服务器开发&#xff0c;拥有丰富的C&#xff0c;go等语言开发经验&#xff0c;mysql&#xff0c;mongo&#xff0c;redis等数据库&#xff0c;设计模…

【vitePress】基于github快速添加评论功能(giscus)

一.添加评论插件 使用giscus来做vitepress 的评论模块&#xff0c;使用也非常的简单&#xff0c;具体可以参考&#xff1a;giscus 文档&#xff0c;首先安装giscus npm i giscus/vue 二.giscus操作 打开giscus 文档&#xff0c;如下图所示&#xff0c;填入你的 github 用户…

JAVA使用自定义注解,在项目中实现EXCEL文件的导出

首先定义一个注解 Retention(RetentionPolicy.RUNTIME) Target(ElementType.FIELD) public interface Excel {/*** 导出时在excel中排序*/int sort() default Integer.MAX_VALUE;/*** 导出到Excel中的名字.*/String name() default "";/*** 首行字段的批注*/String …

有限元分析学习——Anasys Workbanch第一阶段笔记(14)静定与超静定问题、约束类型介绍、简支梁挠度求解和自定义材料库建立

目录 0 序言 1 静定与超静定问题 2 Workbranch中Supports介绍 3 简支梁挠度的有限元求解 4 自定义材料库建立 0 序言 静定与超静定问题、约束类型介绍、简支梁挠度求解和自定义材料库建立(内容对应视频22到24课)。 1 静定与超静定问题 在有限元分析中&#xff0c;不同的…

领域算法 - 大数据处理

大数据处理 文章目录 大数据处理一&#xff1a;hash分流二&#xff1a;双层桶1&#xff1a;什么是双层桶2&#xff1a;双层桶案例 三&#xff1a;外排序1&#xff1a;经典问题2&#xff1a;位图排序法3&#xff1a;多路归并排序 四&#xff1a;bitMap1&#xff1a;添加 -> 异…

以太网实战AD采集上传上位机——FPGA学习笔记27

一、设计目标 使用FPGA实现AD模块驱动采集模拟电压&#xff0c;通过以太网上传到电脑上位机。 二、框架设计 数据位宽转换模块&#xff08;ad_10bit_to_16bit&#xff09;&#xff1a;为了方便数据传输&#xff0c;数据位宽转换模块实现了将十位的 AD 数据转换成十六位&#…

JavaWeb 快速入门 javaScript(预测爆文) | 019

今日推荐语 人经常推翻自己&#xff0c;经常不同意昨天的自己&#xff0c;这也是常态。——纪静蓉 日期 学习内容 打卡编号2025年01月20日JavaWeb快速入门javaScript019 前言 哈喽&#xff0c;我是菜鸟阿康。 今天大概学习了下 js 的的基础知识&#xff0c;js …

[c语言日寄]内存初阶:大端字节序和小端字节序

【作者主页】siy2333 【专栏介绍】⌈c语言日寄⌋&#xff1a;这是一个专注于C语言刷题的专栏&#xff0c;精选题目&#xff0c;搭配详细题解、拓展算法。从基础语法到复杂算法&#xff0c;题目涉及的知识点全面覆盖&#xff0c;助力你系统提升。无论你是初学者&#xff0c;还是…

【MySQL】数据库-图书管理系统(CC++实现)

一.预期功能 该图书管理系统设计提供基本的设计模版&#xff0c;涉及数据库的增删查改等操作&#xff0c;包含登录功能&#xff0c;图书管理功能&#xff0c;图书借阅功能&#xff0c;用户管理功能等基础功能&#xff0c;详细功能查看以下菜单表&#xff0c;共包含三个菜单&am…

Linux-C/C++--深入探究文件 I/O (下)(文件共享、原子操作与竞争冒险、系统调用、截断文件)

经过上一章内容的学习&#xff0c;了解了 Linux 下空洞文件的概念&#xff1b;open 函数的 O_APPEND 和 O_TRUNC 标志&#xff1b;多次打开同一文件&#xff1b;复制文件描述符&#xff1b;等内容 本章将会接着探究文件IO&#xff0c;讨论如下主题内容。  文件共享介绍&…

RabbitMQ-消息可靠性以及延迟消息

目录 消息丢失 一、发送者的可靠性 1.1 生产者重试机制 1.2 生产者确认机制 1.3 实现生产者确认 &#xff08;1&#xff09;开启生产者确认 &#xff08;2&#xff09;定义ReturnCallback &#xff08;3&#xff09;定义ConfirmCallback 二、MQ的持久化 2.1 数据持久…

springboot基于前后端分离的摄影知识网站

Spring Boot 基于前后端分离的摄影知识网站 一、项目概述 Spring Boot 基于前后端分离的摄影知识网站&#xff0c;是一个专为摄影爱好者、专业摄影师打造的知识共享与交流平台。借助 Spring Boot 强大的后端架构搭建能力&#xff0c;结合前端独立开发的灵活性&#xff0c;整合…

B站评论系统的多级存储架构

以下文章来源于哔哩哔哩技术 &#xff0c;作者业务 哔哩哔哩技术. 提供B站相关技术的介绍和讲解 1. 背景 评论是 B站生态的重要组成部分&#xff0c;涵盖了 UP 主与用户的互动、平台内容的推荐与优化、社区文化建设以及用户情感满足。B站的评论区不仅是用户互动的核心场所&…

Linux Bash 中使用重定向运算符的 5 种方法

注&#xff1a;机翻&#xff0c;未校。 Five ways to use redirect operators in Bash Posted: January 22, 2021 | by Damon Garn Redirect operators are a basic but essential part of working at the Bash command line. See how to safely redirect input and output t…

什么是三高架构?

大家好&#xff0c;我是锋哥。今天分享关于【什么是三高架构?】面试题。希望对大家有帮助&#xff1b; 什么是三高架构? 1000道 互联网大厂Java工程师 精选面试题-Java资源分享网 “三高架构”通常是指高可用性&#xff08;High Availability&#xff09;、高性能&#xff…

хорошо哈拉少wordpress俄语主题

хорошо哈拉少wordpress俄语主题 wordpress俄文网站模板&#xff0c;推荐做俄罗斯市场的外贸公司建俄语独立站使用。 演示 https://www.jianzhanpress.com/?p7360

计算机组成原理--笔记二

目录 一.计算机系统的工作原理 二.计算机的性能指标 1.存储器的性能指标 2.CPU的性能指标 3.系统整体的性能指标&#xff08;静态&#xff09; 4.系统整体的性能指标&#xff08;动态&#xff09; 三.进制计算 1.任意进制 > 十进制 2.二进制 <> 八、十六进制…

C# OpenCV机器视觉:特征匹配 “灵魂伴侣”

在一个阳光仿佛被施了魔法&#xff0c;欢快得直蹦跶的早晨&#xff0c;阿强像个即将踏上神秘寻宝之旅的探险家&#xff0c;一屁股墩在实验室那张堆满各种奇奇怪怪小玩意儿的桌前。桌上&#xff0c;零件、线路、半成品设备乱成一团&#xff0c;唯有他那宝贝电脑屏幕散发着清冷又…