java中Properties文件和XML文件

文章介绍了Java中Properties类用于读写属性文件的方法,如load(),getProperty(),setProperty()等,以及如何使用SAXReader解析XML文件,包括Document和Element类的用法。
摘要由CSDN通过智能技术生成

Properites:

相当于是一个Map集合

核心作用:Properites是用来代表属性文件的,通过Properites类来读写属性文件中的内容

public Properties()

Creates an empty property list with no default values.

public void load(InputStream inStream) throws IOException

通过字节输入流,读取属性文件中的键值对内容 

public void load(Reader reader) throws IOException

 通过字符输入流,读取属性文件中的键值对内容 

public String getProperty(String key)

根据键获得值(跟get()方法一样) 

public Set<String> stringPropertyNames()

获取全部键的集合(就是keySet()方法) 

public class test1 {
    public static void main(String[] args) throws Exception {
        //1:创建一个Properties对象
        Properties p=new Properties();

        //2:加载属性文件的键值对数据到Properties对象中
        p.load(new FileReader("day17-file-app\\src\\people.properties"));
        System.out.println(p);
        //{aaa=miji, ccc=niji2, hhh=123}

        //根据键取值
        System.out.println(p.getProperty("hhh"));//123

        //遍历所有键值对
        Set<String> strings = p.stringPropertyNames();
        for(String s:strings)
        {
            System.out.println("key=="+s+" value=="+p.getProperty(s));
        }
        /*key==aaa value==miji
        key==ccc value==niji2
        key==hhh value==123*/
        //Lambda表达式
       p.forEach((s1,s2)-> System.out.println("key=="+s1+" value=="+s2));

    }
}

 public Object setProperty(String key, String value)

保存键值对数据到Propertices对象中去

 public void store(OutputStream out, String comments) throws IOException

把该对象中所有的键值对数据,通过字节输出流写到属性文件中,comments是注释

public void store(Writer writer, String comments) throws IOException

 把键值对数据,通过字符输出流写到属性文件中

public class test2 {
    public static void main(String[] args) throws Exception{
        Properties p=new Properties();

        //存储键值对数据到Properties对象中
        p.setProperty("aa","mi");
        p.setProperty("bb","nn");

        //把Properties对象的数据存到文件中
        p.store(new FileWriter("day17-file-app\\src\\people2.properties"),"i save some people");
        
    }
}

 练习:把键为"hhh"的键值改为10

public class test3 {
    public static void main(String[] args) throws Exception{
        //获取对象
        Properties p=new Properties();
        //加载
        p.load(new FileReader("day17-file-app\\src\\people.properties"));

        //获取键值对
       /* Set<String> strings = p.stringPropertyNames();
        for(String s:strings)
        {
            if(Objects.equals(s,"hhh"))
            {
                p.setProperty(s,"100");
                p.store(new FileWriter("day17-file-app\\src\\people.properties"),"sucess");
            }
        }
        System.out.println(p);*/
        //判断是否含有"hhh"这个键
        if(p.containsKey("hhh"))
        {
            p.setProperty("hhh","10");
            p.store(new FileWriter("day17-file-app\\src\\people.properties"),"sucess");
        }
        System.out.println(p);
    }
}

XML文件的作用和应用场景

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

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

解析xml文件,需要下载Dom4j框架 

SAXReader类:

public SAXReader()

构建Dom4j的解析器对象

public Document read(String s)
              throws ​​​​​​DocumentException

把XML文件读成Document对象

public Document read(java.io.InputStream in)
              throws ​​​​​​DocumentException

通过字节输入流读取XML文件

 Document类:

Element getRootElement()

获取根元素对象

Element类:

public String getName()

获得元素名字

java.util.List<Element> elements()

获取当前元素下的所有子元素

java.util.List<Element> elements(java.lang.String name)

获取当前元素下指定名字的所有子元素,并存入集合中

Element element(java.lang.String name)

获取当前元素下指定名字的子元素,若有多个返回第一个

java.lang.String attributeValue(java.lang.String name)

通过属性名获得属性值

java.lang.String elementText(java.lang.String name)

得到指定名称的子元素的文本

java.lang.String getText()

获得文本

这是一个XML文件:

<?xml version="1.0" encoding="UTF-8" ?>
<!--注释-->
<!--跟标签只能有一个-->
<students>
    <student id="1">
        <name>hhh</name>我是hhh
        <sex>男</sex>
        <password>nihao</password>
        <!--&lt;是<号 &amp;是&符号-->
        <data>3 &lt; 2 &amp;&amp; 5>4</data>
        <data1> <!--这里面可以随便写,输入CD-->
            <![CDATA[
            3<2&&5>4
            ]]>
        </data1>
    </student>
    <student id="2">我是aaa
        <name>aaa</name>
        <sex>女</sex>
        <password>abcde</password>
        <data>3 &lt; 2 &amp;&amp; 5>4</data>
    </student>
    <teacher>

    </teacher>
</students>

 

public class test1 {
    public static void main(String[] args) throws Exception {
        //创建一个SAXReader解析器对象
        SAXReader saxReader=new SAXReader();

        //通过saxReader对象把需要解析的xml文件解析成一个Document对象
        Document read = saxReader.read("day17-file-app\\src\\helloworld.xml");

        //从文档对象中解析XML文件的全部数据
        Element element = read.getRootElement();//得到根元素对象
        System.out.println(element.getName());//students,得到根元素的名字

        //获取根元素的所有一级子元素
        List<Element> elements = element.elements();
        for(Element e:elements)
        {
            System.out.println(e.getName());
                    /*student
                    student
                    teacher*/
        }
        //获取指定名字的子元素结合
        List<Element> s1 = element.elements("student");
        for(Element e:s1)
        {
            System.out.println(e.getName());
                    /*student
                    student*/
            System.out.println(e.getText());//获得文本内容
                    /*我是hhh
                    我是aaa*/
            System.out.println(e.element("name").getText());//获得e元素的第一个name元素的文本内容
            //hhh
            //aaa
        }

        //获取元素的属性值
        Element student=element.element("student");
        System.out.println(student.attributeValue("id"));//1




    }
}

  • 32
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

落落落sss

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值