读取.properties配置文件的方式
一.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配置文件的方式的更多相关文章
- Java 读取 .properties 配置文件的几种方式
Java 开发中,需要将一些易变的配置参数放置再 XML 配置文件或者 properties 配置文件中.然而 XML 配置文件需要通过 DOM 或 SAX 方式解析,而读取 properties 配 ...
- java读取.properties配置文件的几种方法
读取.properties配置文件在实际的开发中使用的很多,总结了一下,有以下几种方法(仅仅是我知道的):一.通过jdk提供的java.util.Properties类.此类继承自java.util. ...
- Java 读取 .properties 配置文件
java 开发中,经常要读取 properties 配置文件,下面介绍几种读取方式: 1.基于 InputStream 读取配置文件 该方式的优点在于可以读取任意路径下的配置文件 Properties ...
- javaweb 读取properties配置文件参数
场景1:在servlet中读取properties配置文件参数 protected void doGet(HttpServletRequest request, HttpServletResponse ...
- 【转载】java读取.properties配置文件的几种方法
读取.properties配置文件在实际的开发中使用的很多,总结了一下,有以下几种方法(仅仅是我知道的):一.通过jdk提供的java.util.Properties类.此类继承自java.util. ...
- 读取.properties配置文件
方法1 public class SSOUtils { protected static String URL_LOGIN = "/uas/service/api/login/info&q ...
- java读取properties配置文件总结
java读取properties配置文件总结 在日常项目开发和学习中,我们不免会经常用到.propeties配置文件,例如数据库c3p0连接池的配置等.而我们经常读取配置文件的方法有以下两种: (1) ...
- Java读取Properties配置文件
1.Properties类与Properties配置文件 Properties类继承自Hashtable类并且实现了Map接口,使用键值对的形式来保存属性集.不过Properties的键和值都是字符串 ...
- java读取properties配置文件[转]
网上文章常见的几种读取.properties文件的方式 1.使用java.util.Properties类的load()方法 示例: InputStream in = lnew BufferedInp ...
随机推荐
- 【MySQL作业】sum、max 和 min 聚合函数——美和易思聚合函数应用习题
点击打开所使用到的数据库>>> 1.统计商品最高单价和最低单价. -- 获取所有商品的最高单价和最低单价: select max(unitPrice) 最高单价 , min(unit ...
- Kibana_X-Pack管理Elasticsearch权限
在Kibana上面配置权限,验证对Elasticsearch权限控制, 主要步骤如下: 1.创建角色 2.创建用户,并且赋予用户角色 3.用户登陆,验证没有权限 4.赋予角色权限 5.用户登陆,验证拥 ...
- Java--Map的使用认知
Java里面的Map是一个抽象接口,有一些类实现的该接口比如HashMap.TreeMap等 HashMap 是一个散列表,存储的内容是靠键值对来映射的(key-value). 基本认识 HashMa ...
- python使用String的Template进行参数动态替换
1.前言: 之前使用string的find(),从指定的param里面查找,是否包含了某个字符,有的话,使用replace进行替换,一个接口的param要替换的参数少的话,使用这种方式,的确可行,如果 ...
- Windows Batch 编程 和 Powershell 编程
Batch Script - Functions with Return Values https://www.tutorialspoint.com/batch_script/batch_script ...
- 虚拟机上CentOS7网络配置
如果图片损坏:点击链接:https://www.toutiao.com/i6493449418249863693/ 设置网络 首先打开虚拟网络编辑器 权限打开 选择NAT模式,设置IP 应用确定之后, ...
- Keepalived高可用、四层负载均衡
目录 Keepalived高可用 高可用简介 常用的工具 问题 名称解释 VRRP协议 部署keepalived 下载安装 Keepalived配置 保证nginx配置一样 解决keepalived的 ...
- IDEA超级好用的插件推荐
IDEA超级好用的插件推荐 以下都是本人使用idea开发以来,所使用过的插件,强烈推荐,提升代码质量,事半功倍之首选!!! 先介绍下如何安装这些插件:(本人使用idea的版本是2020.2.3) 1. ...
- js中数字和字母互转的方法
var letter = String.fromCharCode(66); // B var num = "B".charCodeAt(); // 66
- 马哈鱼血缘分析工具部署介绍--win 10
马哈鱼血缘分析工具部署介绍--win 10 随着大数据技术的发展与普及,数据治理和数据质量变得越来越重要,数据血缘分析在业界悄然兴起并得到了广泛流行,马哈鱼是国内少有的一款专业且易用的血缘分析工具.本 ...