配置文件
硬编码:将需要经常修改值的变量写死在.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>