一.Properties类解读:

1.Properties类本质其实还是HashTabe,及底层的实现是HashTable

public
class Properties extends Hashtable<Object,Object>

可以看到Properties继承了HashTable类,HashTable底层是以数组+链表的形式实现的(jdk1.7,jdk1.8就变成了数组+链表+红黑树的结构);HashTable这种数据结构中可以存放很多种数据类型,但是Properties类只支持存储String类型的key/value,有api文档为证:

2. 所以Properties类中不建议使用父类HashTable中的put/putAll方法,因为这有可能会插入一些非字符串的键值,以api问档为证(其实我就是翻译了一遍文档):

3.Properties类可以从流中读取或者保存到流中。

上api:

二.

方式一:直接使用流的方式加载properties文件

package com.tust.test.properties;

import java.io.FileInputStream;
import java.util.Properties; public class PropertiesTest {
public static void main(String[] args) {
try {
Properties properties = new Properties();
/*
当使用IO流来加载properties文件的时候
FileInputStream fis = new FileInputStream("propertiesTest1.properties");来读取文件的时候,默认是在当前module(当前工程下)下查找该properties文件;
当然如果properties属性文件不在当前模块下的时候,可以指定具体的路径:
FileInputStream fis = new FileInputStream("src\\resources\\propertiesTest1.properties");
*/
//FileInputStream fis = new FileInputStream("propertiesTest1.properties");
FileInputStream fis = new FileInputStream("src\\resources\\propertiesTest1.properties");
properties.load(fis);
System.out.println(properties.getProperty("name"));
System.out.println(properties.getProperty("age"));
} catch (Exception e) {
e.printStackTrace();
}
}
}

方式二:使用反射加载properties配置文件

package com.tust.test.properties;

import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties; public class PropertiesTest {
public static void main(String[] args) { try {
Properties properties = new Properties();
/*
当时用类加载器去加载properties属性文件的时候,默认在是在当前module(当前项目)的src下;
如果属性文件不在src下,比如是在src/resources下,那么使用:
InputStream resourceAsStream = PropertiesTest.class.getClassLoader().getResourceAsStream("src\\resorces\\propertiesTest1.properties");就不行
*/
InputStream resourceAsStream = PropertiesTest.class.getClassLoader().getResourceAsStream("propertiesTest1.properties");
properties.load(resourceAsStream);
System.out.println(properties.getProperty("name"));
System.out.println(properties.getProperty("age"));
} catch (IOException e) {
e.printStackTrace();
}
}
}

配置文件不建议写在当前module(项目下),建议写在src下,如果使用方式一,那么应该在路径前添加src\\,如果使用方式二则不必。

读取.properties配置文件的方式的更多相关文章

  1. Java 读取 .properties 配置文件的几种方式

    Java 开发中,需要将一些易变的配置参数放置再 XML 配置文件或者 properties 配置文件中.然而 XML 配置文件需要通过 DOM 或 SAX 方式解析,而读取 properties 配 ...

  2. java读取.properties配置文件的几种方法

    读取.properties配置文件在实际的开发中使用的很多,总结了一下,有以下几种方法(仅仅是我知道的):一.通过jdk提供的java.util.Properties类.此类继承自java.util. ...

  3. Java 读取 .properties 配置文件

    java 开发中,经常要读取 properties 配置文件,下面介绍几种读取方式: 1.基于 InputStream 读取配置文件 该方式的优点在于可以读取任意路径下的配置文件 Properties ...

  4. javaweb 读取properties配置文件参数

    场景1:在servlet中读取properties配置文件参数 protected void doGet(HttpServletRequest request, HttpServletResponse ...

  5. 【转载】java读取.properties配置文件的几种方法

    读取.properties配置文件在实际的开发中使用的很多,总结了一下,有以下几种方法(仅仅是我知道的):一.通过jdk提供的java.util.Properties类.此类继承自java.util. ...

  6. 读取.properties配置文件

    方法1 public  class SSOUtils { protected static String URL_LOGIN = "/uas/service/api/login/info&q ...

  7. java读取properties配置文件总结

    java读取properties配置文件总结 在日常项目开发和学习中,我们不免会经常用到.propeties配置文件,例如数据库c3p0连接池的配置等.而我们经常读取配置文件的方法有以下两种: (1) ...

  8. Java读取Properties配置文件

    1.Properties类与Properties配置文件 Properties类继承自Hashtable类并且实现了Map接口,使用键值对的形式来保存属性集.不过Properties的键和值都是字符串 ...

  9. java读取properties配置文件[转]

    网上文章常见的几种读取.properties文件的方式 1.使用java.util.Properties类的load()方法 示例: InputStream in = lnew BufferedInp ...

随机推荐

  1. springboot单元测试为什么排除junit-vintage-engine

    https://blog.csdn.net/Ber_Bai/article/details/117001443 如果不排除,就需要使用@RunWith注解? 25-springboot整合单元测试指定 ...

  2. 初识python 之 取101到200之前的所有素数

    素数:只能被1或本身整除 思路分析:这个数只有2个数据能整除 代码如下: n = 0 li = [] for i in range(101,200): m = 0 for j in range(1,2 ...

  3. Go语言命名规范

    一.变量命名规范 变量命名一般采用驼峰式,当遇到特有名词(缩写或简称,如DNS)的时候,特有名词根据是否私有全部大写或小写.例子: var apiClient var URLString 二.常量命名 ...

  4. 创客系列教程——认识LED灯

    认识LED灯 一.初识LED灯   LED灯是一种能够将电能转化为可见光的固态的半导体器件,它可以直接把电转化为光.LED灯逐步融入到生活中的方方面面:室内外的照明.电子指示牌.酷炫的舞台灯光.车辆的 ...

  5. 关于less使用初学者常犯错误

    1.多层嵌套 2.定义变量复用性不高 3.方法定义多余参数.

  6. 使用.NET 6开发TodoList应用(26)——实现Configuration和Option的强类型绑定

    系列导航及源代码 使用.NET 6开发TodoList应用文章索引 需求 在上一篇文章使用.NET 6开发TodoList应用(25)--实现RefreshToken中,我们通过使用Configura ...

  7. Solon 1.6.15 发布,增加部分jdk17特性支持

    关于官网 千呼万唤始出来: https://solon.noear.org .整了一个月多了...还得不断接着整! 关于 Solon Solon 是一个轻量级应用开发框架.支持 Web.Data.Jo ...

  8. python极简教程06:生成式和装饰器

    测试奇谭,BUG不见. 这一场,主讲python的生成式和装饰器. 目的:掌握四种生成式(列表.生成器.集合.字典),装饰器的原理和使用. 生成式 01 什么是生成式? 能够用一行代码,快速高效的生成 ...

  9. 1011day-人口普查系统

    1.Browse.jsp <%@ page language="java" contentType="text/html; charset=UTF-8" ...

  10. Cesium源码剖析---视频投影

    Cesium中的视频投影是指将视频作为一种物体材质,实现在物体上播放视频的效果.这个功能在Cesium早期版本中就支持了,在Code Example中有一个示例.今天就来分析一下其内部实现原理. 1. ...