欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 新闻 > 国际 > Java_特殊文件

Java_特殊文件

2025/2/7 4:46:05 来源:https://blog.csdn.net/weixin_44738540/article/details/140075961  浏览:    关键词:Java_特殊文件

特殊文件

储存多个用户:用户名、密码、家乡、性别
例如 .properties .XML 文件

存储有关系的数据,做为系统的配置文件
作为信息进行传输

这些特殊文件,我们主要学什么?

了解他们的特点、作用

学习使用程序读取他们里面的数据

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

.properties

1、只能是键值对
2、键不能重复
3、文件后缀一般是.properties结尾的

在这里插入图片描述
Properties
是一个Map集合(键值对集合),但是我们一般不会当集合使用。

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

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

构造器说明
public Properties()用于构建Properties集合对象(空容器)
public void load(InputStream is)通过字节输入流,读取文件里的键值对数据
public void load(Reader reader)通过字符输入流,读取文件里的键值对数据
public String getProperty(String key)根据获取值(其实就是get方法的效果)
public Set stringPropertyNames()获取全部键集合(其实就是ketSet方法的效果)
import java.io.FileInputStream;
import java.io.FileReader;
import java.util.Properties;
import java.util.Set;public class PropertiesTest1 {public static void main(String[] args) throws Exception {//1、创建一个Properties的对象出来(键值对集合、空容器)Properties properties = new Properties();System.out.println(properties);//2、开始加载属性文件中的键值对数据porperties对象中去properties.load(new FileReader("C:\\Users\\Administrator\\IdeaProjects\\untitled\\src\\users.p" +"roperties"));System.out.println(properties);System.out.println(properties.getProperty("赵敏"));System.out.println(properties.getProperty("张无忌"));//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);});}
}
import java.io.FileWriter;
import java.util.Properties;public class PropertiesTest2 {public static void main(String[] args) throws Exception {//1、创建Properties对象出来,先用它存储一些数据Properties prop=new Properties();Properties properties = new Properties();properties.setProperty("user.name","admin");properties.setProperty("zhangwuji","mimin");properties.setProperty("zhangcuishan","susu");properties.setProperty("yinsusu","mimi");//2、把properties对象中的键值对数据存入到属性文件夹中properties.store(new FileWriter("C:\\Users\\Administrator\\IdeaProjects\\untitled\\src\\users2.properties"),"i saved many users!");}
}

特殊文件.xml文件

xml(全称EXtensible Markup Language,可扩展标记语言)

XML特点

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

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

xml中只能有一根标签。

xml中的标签可以有属性。

如果一个文件中放置的是XML格式的数据,这个文件就是XML文件,后缀一般要写成.xml

xml的创建

就是创建一个XML文件,要求文件的后缀必须使用xml,如hello_world.xml

XML的语法规则

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

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

version:XML默认的版本号码、该属性是必须存在的
encoding:本xml文件的编码

xml中可以定义注释信息:

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

&lt;   < 小于
&gt;> 大于
&amp;   & 和号
&quot; ” 引号

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

XML的作用和应用场景

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

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

在这里插入图片描述

解析XML文件

注意:程序员并不需要自己原始的IO流代码来解析XML,难度较大

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

DOM4J解析XML文件的思想:文档对象模型

在这里插入图片描述

Dom4J解析XML-得到Document对象

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

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

Docmuent

方法名说明
Element getRootElement()获取根元素对象。

import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;public class Dom4JTest1 {public static void main(String[] args) throws Exception {//1、创建一个Dom4J框架提供的解析对象SAXReader saxReader =  new SAXReader();//2、使用saxReader对象把需要解析的XML文件读成一个Document对象。Document document = saxReader.read("C:\\Users\\Administrator\\IdeaProjects\\untitled\\src\\hollworld.xml");//3、从文档对象中解析XML文件的全部数据Element root = document.getRootElement();System.out.println(root.getName());}
}

Element 方法

方法名说明
public String getName()得到元素名字
public List elements()得到当前元素下所有子元素
public List elements(String name)得到当前元素下指定名字的子元素返回集合
public Element element(String name)得到当前元素下指定名字元素,如果有很多名字相同的返回第一个
public String attributeValue(String name)通过属性名直接得到属性值
public String elementText(元素子名)得到元素指定名称的子元素文本
public String getText()得到文本
import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;import java.util.List;public class Dom4JTest1 {public static void main(String[] args) throws Exception {//1、创建一个Dom4J框架提供的解析对象SAXReader saxReader =  new SAXReader();//2、使用saxReader对象把需要解析的XML文件读成一个Document对象。Document document = saxReader.read("C:\\Users\\Administrator\\IdeaProjects\\untitled\\src\\hollworld.xml");//3、从文档对象中解析XML文件的全部数据Element root = document.getRootElement();System.out.println(root.getName());//4、获取根元素下的全部一级子元素List<Element> elements=root.elements();System.out.println(root.getName());for(Element element:elements){System.out.println(element.getName());}//5、获取当前元素下的某个子元素Element people = root.element("people");System.out.println(people.getText());//如果下面有很多子元素user,默认获取第一个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.getName());}//7、获取全部文本内容:获取当前元素的子元素文本值System.out.println(user.elementText("name"));System.out.println(user.elementText("地址"));System.out.println(user.elementTextTrim("地址"));System.out.println(user.elementText("password"));Element data = user.element("data");System.out.println(data.getText());System.out.println(data.getTextTrim());//取出文本出去前后空格}
}

如何使用程序把数据写出到XML文件中去?

        不建议用dom4j做推荐直接把程序里的数据拼接成XML格式,然后用IO流写出去
import java.io.BufferedWriter;
import java.io.FileWriter;
import java.nio.Buffer;/**目标 如何使用程序把数据写出到XML文件中去<?xml version="1.0" encoding="UTF-8"?><book><name>从入门到跑路</name><outhor>dlei</outhor><price>999.9</price></book>**/public class Dom4JTest4 {public static void main(String[] args) {//1、使用一个StringBuilder 对象来拼接XML格式的数据StringBuilder sb= new StringBuilder();sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");sb.append("<book>\r\n");sb.append("\t<name>").append("从入门到跑路").append("</name>\r\n");sb.append("\t<author>").append("dlei").append("</author>\r\n");sb.append("\t<price>").append(999.99).append("</price>\r\n");sb.append("<\book>");try(BufferedWriter bw = new BufferedWriter(new FileWriter("C:\\Users\\Administrator\\IdeaProjects\\untitled\\src\\users3.properties"))){bw.write(sb.toString());}catch(Exception e){e.printStackTrace();}}
}

补充知识:约束XML文件的编写

什么是约束XML文件的书写?
就是限制XML文件只能按照某种格式进行书写。

约束文档

专门用来限制XML书写格式的文档,比如:限制标签、属性应该怎么写。

DTD文档
Schema文档

在这里插入图片描述

在这里插入图片描述

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com