学习笔记——Properties类配置文件

Properties类

  1. 可以生成配置文件

  2. 解析配置文件

继承HashTable,它是线程安全的map。

这个类有put方法,不推荐,因为配置文件都是字符串。因此给我们提供了单独的get,set方法 这方法,只能传字符串。

获取配置文件properties的四种方法:

  1. 传统io流的方式:不推荐

    p.load(new FileInputStream("resources/db.properties"));

  2. 当前字节码对象获取流的方式,掌握

    p.load(Demo.class.getResourceAsStream("/db.properties"));

  3. 通过类加载方式获取流,注意 没有斜杠

    p.load(Demo.class.getClassLoader().getResourceAsStream("db.properties"));

  4. 通过当前线程类加载器

    p.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("db.properties"));

代码实现:

public class Demo {
   public static void main(String[] args) throws IOException {
       // 创建对象
       Properties p = new Properties();
       // 1. 传统io流的方式:不推荐
       p.load(new FileInputStream("resources/db.properties"));  // 读到内存中了
       // 需要创建资源目录resources,,右键 Mark Directory as -> Resources Root
       // 2. 当前字节码对象获取流的方式,掌握
       p.load(Demo.class.getResourceAsStream("/db.properties"));
       // 3. 通过类加载方式获取流,注意 没有斜杠
       p.load(Demo.class.getClassLoader().getResourceAsStream("db.properties"));
       // 4. 通过当前线程类加载器
       p.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("db.properties"));
       System.out.println(p.getProperty("maxActive"));
  }
}

以下展开写 方便看


加载配置文件方法

传统io流的方式

不推荐

public class Demo01 {
   public static void main(String[] args) throws IOException {
       Properties p = new Properties();
       p.load(new FileInputStream("resources/db.properties")); // 读到内存中了
       System.out.println(p.getProperty("maxActive"));
  }
}

当前字节码对象方式

当前字节码对象获取流的方式

掌握

public class Demo02 {
   public static void main(String[] args) throws IOException {
       Properties p = new Properties();
       // 字节码对象。
       p.load(Demo02.class.getResourceAsStream("/db.properties")); // 读到内存中了
       System.out.println(p.getProperty("maxActive"));
  }
}

类加载器方式

通过类加载方式获取流,

注意不加斜杠

public class Demo03 {
   public static void main(String[] args) throws IOException {
       Properties p = new Properties();
       p.load(Demo03.class.getClassLoader().getResourceAsStream("db.properties"));
       System.out.println(p.getProperty("maxActive"));
  }
}

当前线程方式

通过当前线程类加载器

public class Demo04 {
   public static void main(String[] args) throws IOException {
       Properties p = new Properties();
       p.load(Thread.currentThread().getContextClassLoader().getResourceAsStream("db.properties"));
       System.out.println(p.getProperty("maxActive"));
  }
}

 

posted @ 2021-12-10 11:46  Black空我  阅读(218)  评论(0)    收藏  举报