Java 之 Properties类 属性集

一、概述

  java.util.Properties集合 extends Hashtable<k,v> implements Map<k,v>

  java.util.Properties 继承与 Hashtable,来表示一个持久的属性集。

  Properties 可保存在流中或从流中加载,Properties集合是一个唯一和IO流相结合的集合。

  它使用键值结构存储数据,属性列表中每个键及其对应值都是一个字符串。Properties集合是一个双列集合,key和value默认都是字符串

二、Properties 类

  1、构造方法

public Properties() :创建一个空的属性列表

  2、基本的存储方法

public Object setProperty(String key, String value) : 保存一对属性。
public String getProperty(String key) :使用此属性列表中指定的键搜索属性值。
public Set<String> stringPropertyNames() :所有键的名称的集合,其中该键及其对应值是字符串。

  Demo:

 1  public static void main(String[] args) throws IOException {
 2         //创建Properties集合对象
 3         Properties prop = new Properties();
 4         //使用setProperty往集合中添加数据,都是字符串
 5         prop.setProperty("张三","16");
 6         prop.setProperty("李四","17");
 7         prop.setProperty("王五","18");
 8         //prop.put(1,true);
 9 
10         //使用stringPropertyNames把Properties集合中的键取出,存储到一个Set集合中
11         Set<String> set = prop.stringPropertyNames();
12 
13         //遍历Set集合,取出Properties集合的每一个键
14         for (String key : set) {
15             //使用getProperty方法通过key获取value
16             String value = prop.getProperty(key);
17             System.out.println(key+"="+value);
18         }
19     

  3、与流相关的方法

    (1)使用 store 方法,存储数据

      使用Properties集合中的方法store,把集合中的临时数据,持久化写入到硬盘中存储

void store(OutputStream out, String comments)
void store(Writer writer, String comments)

        参数

        OutputStream out:字节输出流,不能写入中文

        Writer writer:字符输出流,可以写中文

        String comments:注释,用来解释说明保存的文件是做什么的,不能使用中文,会产生乱码,默认是 Unicode编码,一般使用“” 空字符串。

      使用步骤

扫描二维码关注公众号,回复: 7239791 查看本文章

        ① 创建 Properties 对象,添加数据

        ② 创建字节输出流 / 字符输出流对象,构造方法中绑定要输出的目的地。

        ③ 使用 Properties 集合中的方法 store,把集合中的临时数据,持久化写入到硬盘中存储

        ④ 释放资源。

      Demo:

 1 public static void main(String[] args) throws IOException {
 2         //1.创建Properties集合对象,添加数据
 3         Properties prop = new Properties();
 4         prop.setProperty("张三","16");
 5         prop.setProperty("李四","17");
 6         prop.setProperty("王五","18");
 7 
 8         //2.创建字节输出流/字符输出流对象,构造方法中绑定要输出的目的地
 9         FileWriter fw = new FileWriter("E:\\prop.txt");
10 
11         //3.使用Properties集合中的方法store,把集合中的临时数据,持久化写入到硬盘中存储
12         prop.store(fw,"save data");
13 
14         //4.释放资源
15         fw.close();
16 
17         //prop.store(new FileOutputStream("E:\\prop2.txt"),"");  // 写入中文后乱码
18 }

    (2)使用 load 方法,读取数据

      使用Properties集合中的方法load,把硬盘中保存的文件(键值对),读取到集合中使用

 void load(InputStream inStream)
 void load(Reader reader)

      参数

        InputStream inStream:字节输入流,不能读取含有中文的键值对

        Reader reader:字符输入流,能读取含有中文的键值对

       使用步骤

        ① 创建 Properties 集合对象

        ② 使用Properties集合对象中的方法load读取保存键值对的文件

        ③ 遍历Properties集合

       注意

        ① 存储键值对的文件中,键与值默认的连接符号可以使用=,空格(其他符号)

        ② 存储键值对的文件中,可以使用#进行注释,被注释的键值对不会再被读取

        ③ 存储键值对的文件中,键与值默认都是字符串,不用再加引号

       Demo:

 1 public static void main(String[] args) throws IOException {
 2         //1.创建Properties集合对象
 3         Properties prop = new Properties();
 4         //2.使用Properties集合对象中的方法load读取保存键值对的文件
 5         prop.load(new FileReader("E:\\prop.txt"));
 6         //prop.load(new FileInputStream("E:\\prop.txt"));   获取乱码
 7         //3.遍历Properties集合
 8         Set<String> set = prop.stringPropertyNames();
 9         for (String key : set) {
10             String value = prop.getProperty(key);
11             System.out.println(key+"="+value);
12         }
13 }

 

猜你喜欢

转载自www.cnblogs.com/niujifei/p/11491639.html
今日推荐