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

server/2025/1/20 13:05:34/

一. 属性文件.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()获取全部键的集合
java">
#users.properties# 用户名和密码admin=159357
kasha=asdfghjkl
taitan=poiuytrewqpublic 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为注释信息
java">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[...内容...]]>,里面内容可以随便写

java"><?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()得到文本
java">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);//1Attribute attribute = user1.attribute("id");System.out.println(attribute.getName());//idSystem.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"));//18System.out.println(user1.elementText("data"));//2 < 3 && 5 > 4System.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 > 4System.out.println(data.getTextTrim());//2 < 3 && 5 > 4 去除空格
}

        10. XML的生成、约束

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

java">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约束文档指定的格式进行编写,否则报错

java">//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文件中标签

java">//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>


http://www.ppmy.cn/server/159885.html

相关文章

【opencv】第10章 角点检测

第10章 角点检测 10.1 Harris角点检测 10.1.1 兴趣点与角点 在图像处理和与计算机视觉领域&#xff0c;兴趣点(interest points),也被称作关键点 (key points)、特 征 点(feature points)。它被大量用于解决物体识别、图像识别、 图像匹配、视觉跟踪、三维重建等一系列的问题…

【黑马python 第十章:数据可视化】99-104

目录 一、案例三图表介绍1.2020年印美日新冠累计确诊人数2.全国疫情地图可视化3.动态柱状图4.使用的技术&#xff1a;pyecharts 二、折线图1.JSON数据格式2.Python数据和Json数据的相互转化3.pyecharts模块入门4.数据预处理 一、案例三图表介绍 1.2020年印美日新冠累计确诊人数…

springboot基于微信小程序的传统美食文化宣传平台小程序

Spring Boot 基于微信小程序的传统美食文化宣传平台 一、平台概述 Spring Boot 基于微信小程序的传统美食文化宣传平台是一个集传统美食展示、文化传承、美食制作教程分享、用户互动交流以及美食相关活动推广为一体的综合性线上平台。它借助 Spring Boot 强大的后端开发框架构…

【HTTP】详解

目录 HTTP 基本概念啥是HTTP&#xff0c;有什么用&#xff1f;一次HTTP请求的过程当你在浏览器中输入一个浏览器地址&#xff0c;它会发送什么 &#xff1f;---&#xff08;底层流程&#xff09;HTTP的协议头请求头&#xff08;对应客户端&#xff09;一些请求头请求方法 响应头…

MySQL、HBase、ES的特点和区别

MySQL&#xff1a;关系型数据库&#xff0c;主要面向OLTP&#xff0c;支持事务&#xff0c;支持二级索引&#xff0c;支持sql&#xff0c;支持主从、Group Replication架构模型&#xff08;本文全部以Innodb为例&#xff0c;不涉及别的存储引擎&#xff09;。 HBase&#xff1…

工业视觉5-工业视觉选型

工业视觉5-工业视觉选型 任务分析三、知识准备问答四、相机选型五、总结 任务分析 重点明确任务要求 例子&#xff1a; 检测任务类型 外观检测&#xff1a;检查产品表面是否有划痕、污渍、缺陷等。例如&#xff0c;在电子元件生产中&#xff0c;需要检测芯片表面的瑕疵&…

【王树森搜索引擎技术】概要01:搜索引擎的基本概念

1. 基本名词 query&#xff1a;查询词SUG&#xff1a;搜索建议文档&#xff1a;搜索结果标签/筛选项 文档单列曝光 文档双列曝光 2. 曝光与点击 曝光&#xff1a;用户在搜索结果页上看到文档&#xff0c;就算曝光文档点击&#xff1a;在曝光后&#xff0c;用户点击文档&…

图像处理基础(3):均值滤波器及其变种

均值滤波器可以归为低通滤波器&#xff0c;是一种线性滤波器&#xff0c;其输出为邻域模板内的像素的简单平均值&#xff0c;主要用于图像的模糊和降噪。 均值滤波器的概念非常的直观&#xff0c;使用滤波器窗口内的像素的平均灰度值代替图像中的像素值&#xff0c;这样的结果就…