zoukankan      html  css  js  c++  java
  • 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编码,一般使用“” 空字符串。

          使用步骤

            ① 创建 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 }

     

  • 相关阅读:
    python面试题收集
    servlet之小demo(四)
    servlet之ServletRequest与ServletResponse (三)
    servlet之servlet(二)
    hyperopt中文文档:Recipes
    hyperopt中文文档:Recipes
    hyperopt中文文档:Parallelizing-Evaluations-During-Search-via-MongoDB
    hyperopt中文文档:Parallelizing-Evaluations-During-Search-via-MongoDB
    hyperopt中文文档:Interfacing-With-Other-Languages(在其他语言中使用hyperopt)
    hyperopt中文文档:Interfacing-With-Other-Languages(在其他语言中使用hyperopt)
  • 原文地址:https://www.cnblogs.com/niujifei/p/11491639.html
Copyright © 2011-2022 走看看