zmak

配置文件

硬编码:将需要经常修改值的变量写死在.java源代码中,当需要修改时,会造成源码的不安全

为了解决硬编码问题,我们提出了配置文件。

核心原理:将需要经常修改值的变量写在指定类型的配置文件中,通过java代码操作文件,获取数据。

核心技术:流 ----- 字节流

分类 :  

一.properties: 对应的是Java中的Properties集合,该集合是Map集合的实现类之一;支持K-V键值对存储,只支持String类型的Key和Value。

二.xml:

一 .properties应用: 

1.     .properties的创建  :首先在项目下创建resource(名字固定)文件夹 ,之后右击该文件夹选择 Mark Directory as  ----- Resources Root

2.     .properties内语法  :由于其只支持String类型,因此定义变量和值时,直接书写。 注意:不要出现多余的空格

获取.properties配置文件内的数据: 

两种方法:

①传统方式:使用字节输入流,将配置文件中的数据加载进流资源中,再创建properties集合对象调用其方法load将流资源转换成集合中数据,最后通过集合的getProperty方法通过Key获取Value,最后一定要关闭流资源(关闭前合理化判断流对象是否为空,如果为空就没有关闭的必要了(传统方式需要判断))

 1  @Test
 2     public void getValue1(){
 3         //使用流读取指定的配置文件 -- 字节输入流
 4         InputStream is =null;
 5         try {
 6              is =new FileInputStream(new File("D:\\nian1\\resource\\userInfo.properties"));
 7              //将流资源中的数据转换成Prooerties集合数据
 8             //1.创建properties集合对象
 9             Properties p = new Properties();
10             //2.通过集合对象调用方法将流中数据转换成集合中数据
11             p.load(is);
12             //3.通过集合对象调用方法,根据指定的key获取value
13             System.out.println("username = "+p.getProperty("username")+"\npassword = "+p.getProperty("password"));
14         } catch (Exception e) {
15             e.printStackTrace();
16         }finally {
17             try {
18                 //关闭资源前,一定对资源对象进行合理化判断
19                 if (is != null){
20                     is.close();
21                 }
22             } catch (IOException e) {
23                 e.printStackTrace();
24             }
25         }
26     }

②.推荐方式:通过类加载器获取流资源对象,其余同传统方式

 

 

疑点:类加载器!

 

 

 

 public void getValue2() throws Exception {
        /*/
        通过类加载器获取流资源对象
        类加载器:JVM中专门用来解析指定类的加载工具
        获取类加载器方式:2种
        1.反射机制
        classLoader cl = 指定类。class。getClassLoader();
        2.使用当前正在执行的线程对象获取 - 了解
        ClassLoader cl =T和read。currentThread().getContextClassLoader();
         */
     //获取类加载器对象
ClassLoader cl = GetPropertiesValueTest.class.getClassLoader(); //通过类加载器对象调用方法,将指定的配置文件加载到字节输入流中 InputStream is = cl.getResourceAsStream("userInfo.properties"); //创建Properties集合对象 Properties p = new Properties(); //通过集合对象调用方法将流中数据转换成集合中数据 p.load(is); System.out.println("username = "+p.getProperty("username")+"\npassword = "+p.getProperty("password")); //关闭流资源对象 is.close(); }

 二、XML应用:

1.含义:可扩展标记语言,由W3C组织定义,并编写使用规则,目前使用的版本是1.0,支持自定义标签

2.格式: 标签语言,支持单标签和双标签,没有特殊要求不会使用单标签

    <标签名></标签名> -- 双标签

    <标签名> --  单标签

3.代码演示--语法规则

该文件同.properties一样,都建立再resour文件夹下 后缀为xml

<?xml version="1.0" encoding="UTF-8" ?>
<!-- 第一行第一列必须编写文档声明 -->
<!-- 每一个XML文档有且仅有一个根标签 -->
<Demo>
    <demo>
        <name>满满满</name>
        <年龄>18</年龄><!-- 支持中文标签,但没有特殊要求时不建议使用 -->
        <name>OOOO</name><!-- 严格区分大小写,支持同名标签,但是没有特殊要求,一个标签定义一次 -->
        <Name>PPPP</Name>
        <RR/><!-- 支持单标签,但没有特殊要求时不建议使用 -->
    </demo>
    <demo>
        <name>满满满</name>
        <年龄>18</年龄>
        <name>OOOO</name>
        <Name>PPPP</Name>
        <RR/>
    </demo>
</Demo>

 

posted on 2022-08-03 23:35  manman555  阅读(120)  评论(0编辑  收藏  举报

导航