IO流配置文件读取相关

读取property文件中的数据

public static void main(String[] args) throws IOException {
        //此时pro里面为空
        Properties pro = new Properties();

        //使用load方法,就将属性文件加载了进来,此时如果打印pro,则会显示配置文件里面的数据
        pro.load(new FileReader("day0826\\Uerses.properties"));

        //使用getProperty方法获取key的值
        String value = pro.getProperty("赵四");

        //遍历pro里面的所有键对值
        //这个方法是获取所有的key
        Set<String> set = pro.stringPropertyNames();
        for (String key : set) {
            //使用key调取value
            String v = pro.getProperty(key);
            System.out.println("key: "+ key +"---> value: " +  v);
        }

        //使用forEach方法遍历(map提供的);
        pro.forEach((k , v ) -> {
            System.out.println("key: "+ k +"---> value: " +  v);
        });

    -------------------------------------------------------------------------
把数据写入property文件

public static void main(String[] args) throws IOException {
        //把一些键值对信息写到配置文件中去
        Properties pro = new Properties();
        //设置要保存的信息;
        pro.setProperty("张三","zhangsan");
        pro.setProperty("赵四","zhaosi");
        pro.setProperty("王五","wangwu");
        pro.setProperty("李四","lisi");

        //调用store方法,执行保存操作。 store是保存的意思,comments:是你要写入的注释;
        pro.store(new FileWriter("day0826\\Uerses2.properties"),"");
        
    }
  -------------------------------------------------------------------------
/**
     * 一个案例,是用来修改指定属性的值的,这里是把配置文件中的张三的值改为18
     * @param args
     * @throws IOException
     */
    public static void main(String[] args) throws IOException {
        //创建一个加载properties配置文件的map
        Properties pro = new Properties();
        //把配置文件加载进来
        pro.load(new FileReader("day0826\\Uerses2.properties"));
        //查找又没有什么键的数据时,不需要遍历,直接获取他的值,看看是否为null,如果时null,说明不存在;
        if (pro.getProperty("张三") != null) {
            pro.setProperty("张三","18");
        }
        //点击保存
        pro.store(new FileWriter("day0826\\Uerses2.properties"),"修改了");
    }

Properties文件详解:

  • 读取或写入时可以使用实现map接口的Properties类进行解析;
  • Properties文件里面都是存储的键值对,

XML文件详解

      把XML文件展示出来:空白处右击选择openin,选择浏览器即可

XML文件解析框架:DOM4J ,下载地址https://dom4j.github.io/

注意,element解析时只能从上而下的操作。先解析根元素,然后根据根元素来进行再获取子元素或者获取属性等操作;

public static void main(String[] args) throws DocumentException {
        //总之解析XML有两个类需要活用:Element,Attribute
        
        //解析xml文件:思路,使用第三方提供的Dom4J框架来解析xml
        //使用提供的SaxReader的read方法来将xml读取为Document对象
        SAXReader saxReader = new SAXReader();
        Document document = saxReader.read("day0830\\src\\XMLFileDemo.xml");
        //使用Document中的getRootElement()方法,获取element对象。
        // 注意XML文件解析必须从上往下解析
        Element rootElement = document.getRootElement();

        //使用根标签element来获取他的所有子标签
        List<Element> elements = rootElement.elements();
        //可以遍历并使用Element提供的getName()方法获取他们的名字;
        //获取到Element之后,就可以使用element中的方法了
        for (Element e : elements) {
            System.out.println(e.getName());
        }
        //获取指定的标签
        Element popularElement = rootElement.element("popular");
        //获取popular标签下的name标签的值
        String name = popularElement.elementText("name");

        //获取所有user的标签集合。
        /*List<Element> userList = rootElement.elements("user");
        for (Element e : userList) {
            System.out.println(e.elementText("name"));
        }*/
        //要获取id为2的user标签的name属性
            //思路:先获取到所有的user标签,然后在获取Attribute对象,判断他的value()
        //自己想的;
        List<Element> user = rootElement.elements("user");
        for (Element u : user) {
            Attribute idAttr = u.attribute("id");
            if (null != idAttr){
                if ("2".equals(idAttr.getValue())) {
                    System.out.println(u.elementText("name"));
                }
            }
        }


    }

EML文件的写入

public static void main(String[] args) {
        //<?xml version = "1.0" encoding = "utf-8" ?>
        //<users>
        //    <user id="2">
        //        <name>赵四</name>
        //        <age>18</age>
        //        <date>
        //            <![CDATA[
        //            ]]>
        //        </date>
        //    </user>
        //</users>
        //把上面这段xml文件写出到xml文件中去
        //思路、不适用DOM4J,因为据说比较麻烦,直接使用io流即可
        StringBuilder str = new StringBuilder();
        str.append("<?xml version = \"1.0\" encoding = \"utf-8\" ?>");
        str.append("\t<users>\r\n");
        str.append("\t<user id=\"2\"> \r\n");
        str.append("\t\t<name>赵四</name> \r\n").append("\t\t<age>18</age>\r\n");
        str.append("\t</user>\r\n");
        str.append("</users>\r\n");

        //调用一个字符输出流
        try (
                BufferedWriter bufferedWriter = new BufferedWriter(new FileWriter("day0830\\src\\XMLFileDemo2.xml"))
        ){
            //bufferedWriter.write要的是String,而不是StringBuilder,需要转换;
            bufferedWriter.write(str.toString());
        }catch (IOException e){
            e.printStackTrace();
        }
    }

XML约束文件

XML约束文档(XML Schema文档、DTD文档)通常用来定义和验证XML文档的结构和内容。有两种主要的XML约束文档类型:

  1. XML Schema (XSD):XML Schema是一种XML约束语言,用于定义XML文档的结构、元素、属性、数据类型以及元素之间的关系。XML Schema通常以.xsd文件扩展名保存。它提供了更丰富和强大的约束能力,支持数据类型验证和复杂的元素结构定义。

  2. Document Type Definition (DTD):DTD是一种较早的XML约束语言,用于定义XML文档的结构和验证规则。DTD通常以.dtd文件扩展名保存。它的能力相对有限,不支持复杂的数据类型验证,但对于简单的文档结构定义仍然很有用。

简单来讲,XSD与DTD的区别在于,DTD只会约束你里面是什么样的标签,不能约束每个标签里面值的类型等细节,但是XSD可以。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值