java面向对象编程3(4) Properties【重点详解】

守給你的承諾、 提交于 2020-03-25 22:25:31

3 月,跳不动了?>>>

Properties【重点详解】

一. 引言&概述

为什么要用Properties:为了更专业地保存程序的配置信息。

 

配置信息:程序运行时必须要信息

程序A:

用户名=zhangsan

密码=xxxx

IP=192.168.36.11

权限=管理员

码表=utf-8

 

Properties 类表示了一个持久的属性集,可以和Map集合一样存储键值对(HashMap)

 

持久: 把数据从内存中保存到硬盘上

Key    value     都是String

 

 

二. 入门案例:添加键值对

Properties 把数据持久保存在硬盘上。

相当于HashMap,无序,有key  value,key和value都是String

/*
* 入门案例:为Properties添加键值对
* HashMap
* */
@Test
public void run1(){
    //1、创建对象 key value都是String
    Properties p = new Properties();
    //2、添加键值对
    //2.1、添加键值对:setProperty(key,value) 相当于map  put(key,value) ,效果相同
    p.setProperty("k1","v1");
    p.setProperty("k2","v2");
    p.setProperty("k2","v3");
    //2.2、获取键值对:getProperty(key)    相当于map     get(key),效果相同
    String k2 = p.getProperty("k2");
    System.out.println(k2);
    System.out.println(p);
    //3、遍历
    //3.1、把Properties,变成Set集合  集合中保存的是所有的key
    Set<String> set = p.stringPropertyNames();
    //3.2、遍历Set集合
    for (String key : set) {
        System.out.println(key+"----------"+p.getProperty(key));
    }
}

 

 

 

三. 进阶案例1:写出数据操作-字节流

为了写出配置文件

/*
*   向Properties中保存键值对,把键值对写出成为配置文件
*   字节:万能
*   字符
*  */
@Test
public void run1() throws Exception {
    //1、创建Properties对象,保存数据
    Properties p = new Properties();
    p.setProperty("name","大哥");
    p.setProperty("sex","纯爷们");
    p.setProperty("age","18");
    //2、创建输出流对象   扩展名必须是:.properties
    FileOutputStream fos = new FileOutputStream("pd.properties");
    //3、写出文件 :store  存储
    p.store(fos,"这是大哥的信息");
    //4、关流
    fos.close();
}

 

 

 

四. 进阶案例2:读取数据操作-字节流

为了读取配置文件

/*
* 从Properties文件中读取数据
* */
@Test
public void run2() throws Exception {
    //1、创建Properties对象(准备读取数据)
    Properties p = new Properties();
    //2、创建输入流, 读取的文件扩展名必须是:.properties
    FileInputStream fis = new FileInputStream("pd.properties");
    //3、读取 load 加载/读取
    p.load(fis);
    System.out.println(p);
    //4、关流
    fis.close();
}

 

 

五.​​​​​​​ 进阶案例3:字节流字符流对比

用字节流写出:

/*
* 用字符流读
* */
@Test
public void run3() throws Exception {
    //1、创建Properties对象(准备读取数据)
    Properties p = new Properties();
    //2、创建输入流, 读取的文件扩展名必须是:.properties
    FileReader fr = new FileReader("字节流.properties");
    //3、读取 load 加载/读取
    p.load(fr);
    System.out.println(p);
    //4、关流
    fr.close();
}
/*
* 用字节流读
* */
@Test
public void run2() throws Exception {
    //1、创建Properties对象(准备读取数据)
    Properties p = new Properties();
    //2、创建输入流, 读取的文件扩展名必须是:.properties
    FileInputStream fis = new FileInputStream("字节流.properties");
    //3、读取 load 加载/读取
    p.load(fis);
    System.out.println(p);
    //4、关流
    fis.close();
}

/*
*   用字节流写出
*  */
@Test
public void run1() throws Exception {
    //1、创建Properties对象,保存数据
    Properties p = new Properties();
    p.setProperty("name","大哥");
    p.setProperty("sex","纯爷们");
    //2、创建输出流对象   扩展名必须是:.properties
    FileOutputStream fos = new FileOutputStream("字节流.properties");
    //3、写出文件 :store  存储
    p.store(fos,"这是大哥的信息");
    //4、关流
    fos.close();
}

 

 

用字符流写出:

/*
* 用字符流读
* */
@Test
public void run3() throws Exception {
    //1、创建Properties对象(准备读取数据)
    Properties p = new Properties();
    //2、创建输入流, 读取的文件扩展名必须是:.properties
    FileReader fr = new FileReader("字符流.properties");
    //3、读取 load 加载/读取
    p.load(fr);
    System.out.println(p);
    //4、关流
    fr.close();
}
/*
* 用字节流读
* */
@Test
public void run2() throws Exception {
    //1、创建Properties对象(准备读取数据)
    Properties p = new Properties();
    //2、创建输入流, 读取的文件扩展名必须是:.properties
    FileInputStream fis = new FileInputStream("字符流.properties");
    //3、读取 load 加载/读取
    p.load(fis);
    System.out.println(p);
    //4、关流
    fis.close();
}

/*
*   用字符流写出
*  */
@Test
public void run1() throws Exception {
    //1、创建Properties对象,保存数据
    Properties p = new Properties();
    p.setProperty("name","大哥");
    p.setProperty("sex","纯爷们");
    //2、创建输出流对象   扩展名必须是:.properties
    FileWriter fw = new FileWriter("字符流.properties");
    //3、写出文件 :store  存储
    p.store(fw,"这是大哥的信息");
    //4、关流
    fw.close();
}

 

 

字节流写出的文件,用字节流或字符流都可以读取

字符流写出的文件,仅能用字符流读取(字节流乱码)

 

建议:用字节流,读取和写出

 

 

 

六.​​​​​​​ IDEA创建Properties文件

 

 

 

 

今日总结:

Properties: 进行持久化保存数据的集合。 (HashMap)

 

持久化:把内存数据保存到硬盘上。

 

Key和value 都是 String字符串

 

setProperties(key,value);     map.put(key,value)

getProperties(key); map.get(key)

stringPropertyNames(); map.keySet();

 

 

输出流:扩展名  .properties

store(输出流对象,说明信息”);

 

输入流

load(输入流对象)

 

字节流: 写出,任何流都能读【建议】

字符流:写出,仅能字符流

 

 

 

 

​​​​​​​

 

请给努力中的自己点个赞哦!

每天进步一点点`~~~~~

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!