java读取properties配置文件总结
java读取properties配置文件总结
在日常项目开发和学习中,我们不免会经常用到.propeties配置文件,例如数据库c3p0连接池的配置等。而我们经常读取配置文件的方法有以下两种:
(1).使用getResourceAsStream()方法读取配置文件。
(2).使用InputStream()流去读取配置文件。
注意:在使用getResourceAsStream()读取配置文件时,要特别注意配置文件的路径的写法。
this.getClass.getResourceAsStream(fileName)..使用类和资源文件在同一目录下;
this.getclass.getLoader.getResourceAsStream(fileName)..资源文件和classes同级。
下面,我以一个实例来具体讲述分别使用上述两种方法来读取.properties配置文件。
1.项目结构
在项目中,.properties文件的存放路径基本有以上4种,所有在下面的测试中我会用2种方法读取上面的4种不同路径下的.properties文件。(对应上面的4个配置文件)
(1).src下面config.properties包内的配置文件;
- name=\u5F20\u4E09
- age=23
(2).和使用配置文件位于同一包里面的.properties配置文件;
- name=\u674E\u56DB
- age=14
(3).src根目录下面的配置文件;
- jdbc.driver=com.mysql.jdbc.Driver
- jdbc.url=jdbc:mysql://localhost:3306/goods
- jdbc.usename=root
- jdbc.password=123456
(4).位于另外一个source文件夹里面的配置文件。
- dbuser=user
- dbpassword=root
- database=javaTest
2.java读取properyies配置文件
首先,创建读取.properties的工具类PropertiesUtil.java
代码清单【1】
- package read.propertiesFile.test;
- import java.io.BufferedInputStream;
- import java.io.FileInputStream;
- import java.io.FileNotFoundException;
- import java.io.IOException;
- import java.io.InputStream;
- import java.text.MessageFormat;
- import java.util.Properties;
- /**
- * java读取properties配置文件工具类
- * @author Administrator
- *
- * 2016/12/04
- */
- public class PropertiesUtil
- {
- public static final PropertiesUtil INSTANCE = new PropertiesUtil();
- public static PropertiesUtil getInstance()
- {
- return INSTANCE;
- }
- /**
- * 1.使用getSourceAsStream读取配置文件
- */
- public void readPropertiesByGetSourceAsStream()
- {
- /*
- * 1.src下面config.properties包内的配置文件
- * test1.properties
- */
- InputStream is1 = JavaReadPropertiesTest.class.getClassLoader().getResourceAsStream("config/properties/test1.properties");
- /*
- * 2.读取和JavaReadPropertiesTest类位于同一个包里面的配置文件
- * test2.properties
- */
- InputStream is2 = JavaReadPropertiesTest.class.getResourceAsStream("test2.properties");
- /*
- * 3.读取根目录下面的配置文件
- * jdbc.properties
- */
- InputStream is3 = JavaReadPropertiesTest.class.getClassLoader().getResourceAsStream("jdbc.properties");
- /*
- * 4.读取位于另外一个source文件夹里面的配置文件
- * config.properties
- */
- InputStream is4 = JavaReadPropertiesTest.class.getClassLoader().getResourceAsStream("config.properties");
- Properties p = new Properties();
- System.out.println("使用getSourceAsStream()读取配置文件...");
- try
- {
- System.out.println("---读取is1开始---");
- p.load(is1);
- System.out.println("test1.properties:name = "+ p.getProperty("name")
- + ",age = " + p.getProperty("age"));
- System.out.println("---读取is1结束---");
- System.out.println("-----------------------------------------------");
- System.out.println("---读取is2开始---");
- p.load(is2);
- System.out.println("test2.properties:name = "+ p.getProperty("name")
- + ",age = " + p.getProperty("age"));
- System.out.println("---读取is2结束---");
- System.out.println("-----------------------------------------------");
- System.out.println("---读取is3开始---");
- p.load(is3);
- System.out.println("jdbc.properties:");
- // 这里的%s是java String占位符
- System.out.println(String.format("jdbc.driver=%s",p.getProperty("jdbc.driver")));
- System.out.println(String.format("jdbc.url=%s",p.getProperty("jdbc.url")));
- System.out.println(String.format("jdbc.usename=%s",p.getProperty("jdbc.usename")));
- System.out.println(String.format("jdbc.password=%s",p.getProperty("jdbc.password")));
- System.out.println("---读取is3结束---");
- System.out.println("-----------------------------------------------");
- System.out.println("---读取is4开始---");
- p.load(is4);
- System.out.println(MessageFormat.format("dbuser={0}", p.getProperty("dbuser")));
- System.out.println(MessageFormat.format("dbpassword={0}", p.getProperty("dbpassword")));
- System.out.println(MessageFormat.format("database={0}", p.getProperty("database")));
- System.out.println("---读取is4结束---");
- }
- catch (IOException e)
- {
- e.printStackTrace();
- }
- finally
- {
- if(null != is1)
- {
- try {
- is1.close();
- }
- catch (IOException e)
- {
- e.printStackTrace();
- }
- }
- if(null != is2)
- {
- try {
- is2.close();
- }
- catch (IOException e)
- {
- e.printStackTrace();
- }
- }
- if(null != is3)
- {
- try {
- is3.close();
- }
- catch (IOException e)
- {
- e.printStackTrace();
- }
- }
- if(null != is4)
- {
- try {
- is4.close();
- }
- catch (IOException e)
- {
- e.printStackTrace();
- }
- }
- }
- }
- /**
- * 2.使用InputStream读取配置文件
- */
- public void readPropertiesByInputStream()
- {
- InputStream is1 = null;
- InputStream is2 = null;
- InputStream is3 = null;
- InputStream is4 = null;
- System.out.println("使用InputStream读取配置文件...");
- try
- {
- /*
- * 1.src下面config.properties包内的配置文件
- * test1.properties
- */
- is1 = new BufferedInputStream(new FileInputStream("src/config/properties/test1.properties"));
- /*
- * 2.读取和JavaReadPropertiesTest类位于同一个包里面的配置文件
- * test2.properties
- */
- is2 = new BufferedInputStream(new FileInputStream("src/read/propertiesFile/test/test2.properties"));
- /*
- * 3.读取根目录下面的配置文件
- * jdbc.properties
- */
- is3 = new BufferedInputStream(new FileInputStream("src/jdbc.properties"));
- /*
- * 4.读取位于另外一个source文件夹里面的配置文件
- * config.properties
- */
- is4 = new BufferedInputStream(new FileInputStream("config/config.properties"));
- Properties p = new Properties();
- System.out.println("---读取is1开始---");
- p.load(is1);
- System.out.println("test1.properties:name = "+ p.getProperty("name")
- + ",age = " + p.getProperty("age"));
- System.out.println("---读取is1结束---");
- System.out.println("-----------------------------------------------");
- System.out.println("---读取is2开始---");
- p.load(is2);
- System.out.println("test2.properties:name = "+ p.getProperty("name")
- + ",age = " + p.getProperty("age"));
- System.out.println("---读取is2结束---");
- System.out.println("-----------------------------------------------");
- System.out.println("---读取is3开始---");
- p.load(is3);
- System.out.println("jdbc.properties:");
- System.out.println(String.format("jdbc.driver=%s",p.getProperty("jdbc.driver")));
- System.out.println(String.format("jdbc.url=%s",p.getProperty("jdbc.url")));
- System.out.println(String.format("jdbc.usename=%s",p.getProperty("jdbc.usename")));
- System.out.println(String.format("jdbc.password=%s",p.getProperty("jdbc.password")));
- System.out.println("---读取is3结束---");
- System.out.println("-----------------------------------------------");
- System.out.println("---读取is4开始---");
- p.load(is4);
- System.out.println("config.properties:");
- System.out.println(MessageFormat.format("bduser={0}", p.getProperty("bduser")));
- System.out.println(MessageFormat.format("bdpassword={0}", p.getProperty("bdpassword")));
- System.out.println(MessageFormat.format("database={0}", p.getProperty("database")));
- System.out.println("---读取is4结束---");
- }
- catch (FileNotFoundException e)
- {
- e.printStackTrace();
- }
- catch (IOException e)
- {
- e.printStackTrace();
- }
- finally
- {
- if(null != is1)
- {
- try {
- is1.close();
- }
- catch (IOException e)
- {
- e.printStackTrace();
- }
- }
- if(null != is2)
- {
- try {
- is2.close();
- }
- catch (IOException e)
- {
- e.printStackTrace();
- }
- }
- if(null != is3)
- {
- try {
- is3.close();
- }
- catch (IOException e)
- {
- e.printStackTrace();
- }
- }
- if(null != is4)
- {
- try {
- is4.close();
- }
- catch (IOException e)
- {
- e.printStackTrace();
- }
- }
- }
- }
- }
然后,JUnit测试 JavaReadPropertiesTest.java
代码清单【2】
- package read.propertiesFile.test;
- import org.junit.Test;
- /**
- * java读取properties配置文件
- * @author Administrator
- *
- */
- public class JavaReadPropertiesTest
- {
- /**
- * 1.使用getSourceAsStream读取配置文件测试
- */
- @Test
- public void readPropertiesByGetSourceAsStreamTest()
- {
- PropertiesUtil.getInstance().readPropertiesByGetSourceAsStream();
- }
- /**
- * 2.使用InputStream读取配置文件测试
- */
- @Test
- public void readPropertiesByInputStreamTest()
- {
- PropertiesUtil.getInstance().readPropertiesByInputStream();
- }
- }
3.输出结果
- 使用getSourceAsStream()读取配置文件...
- ---读取is1开始---
- test1.properties:name = 张三,age = 23
- ---读取is1结束---
- -----------------------------------------------
- ---读取is2开始---
- test2.properties:name = 李四,age = 14
- ---读取is2结束---
- -----------------------------------------------
- ---读取is3开始---
- jdbc.properties:
- jdbc.driver=com.mysql.jdbc.Driver
- jdbc.url=jdbc:mysql://localhost:3306/goods
- jdbc.usename=root
- jdbc.password=123456
- ---读取is3结束---
- -----------------------------------------------
- ---读取is4开始---
- dbuser=user
- dbpassword=root
- database=javaTest
- ---读取is4结束---
- 使用InputStream读取配置文件...
- ---读取is1开始---
- test1.properties:name = 张三,age = 23
- ---读取is1结束---
- -----------------------------------------------
- ---读取is2开始---
- test2.properties:name = 李四,age = 14
- ---读取is2结束---
- -----------------------------------------------
- ---读取is3开始---
- jdbc.properties:
- jdbc.driver=com.mysql.jdbc.Driver
- jdbc.url=jdbc:mysql://localhost:3306/goods
- jdbc.usename=root
- jdbc.password=123456
- ---读取is3结束---
- -----------------------------------------------
- ---读取is4开始---
- config.properties:
- bduser=null
- bdpassword=null
- database=javaTest
- ---读取is4结束---
4.补充
在这里,我在简要介绍一下,读取配置文件的全部配置信息的方法,以jdbc.properties文件为例。
- /**
- * 3.循环读取配置文件的全部信息
- */
- public void readAllInfo()
- {
- /*
- * 3.读取根目录下面的配置文件
- * jdbc.properties
- */
- InputStream is3 = JavaReadPropertiesTest.class.getClassLoader().getResourceAsStream("jdbc.properties");
- Properties p = new Properties();
- System.out.println("---读取is3开始---");
- try
- {
- p.load(is3);
- //读取资源文件的所有的key值
- Enumeration en= p.propertyNames();
- System.out.println("读取is3开始...");
- while(en.hasMoreElements())
- {
- String key = (String) en.nextElement();
- System.out.println(key + "=" + p.getProperty(key));
- }
- System.out.println("读取is3结束...");
- }
- catch (IOException e)
- {
- e.printStackTrace();
- System.out.println("读取资源文件出错");
- }
- finally
- {
- if(null != is3)
- {
- try
- {
- is3.close();
- System.out.println("关闭is3...");
- }
- catch (IOException e)
- {
- e.printStackTrace();
- }
- }
- }
- }
输出结果是:
- ---读取is3开始---
- 读取is3开始...
- jdbc.url=jdbc:mysql://localhost:3306/goods
- jdbc.driver=com.mysql.jdbc.Driver
- jdbc.usename=root
- jdbc.password=123456
- 读取is3结束...
- 关闭is3...
至此,读取配置文件的总结就先这样,后期有新的体会时,在进行增加。谢谢观阅。
java读取properties配置文件总结的更多相关文章
- java读取properties配置文件信息
一.Java Properties类 Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件,各种语言都有自己所支持的配置文件,配置 ...
- 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 ...
- Java读取properties配置文件工具类
1. PropertyUtils.java package javax.utils; import java.io.InputStream; import java.util.Properties ...
- 【转载】java读取.properties配置文件的几种方法
读取.properties配置文件在实际的开发中使用的很多,总结了一下,有以下几种方法(仅仅是我知道的):一.通过jdk提供的java.util.Properties类.此类继承自java.util. ...
- Java读取Properties配置文件
1.Properties类与Properties配置文件 Properties类继承自Hashtable类并且实现了Map接口,使用键值对的形式来保存属性集.不过Properties的键和值都是字符串 ...
- java读取properties配置文件的方法
app.properties mail.smtp.host=smtp.163.com mail.transport.protocol=smtp import java.io.InputStream; ...
- Java读取.properties配置文件并连接数据库
1.读取配置文件 //Properties集合 流对象读取键值对 public static void getNum() throws Exception { Properties p=new Pro ...
随机推荐
- YII2学习第一天
YII2学习第一天,之前稍微看了看TP,感觉和自己的理念不是很符合,然后转学YII2了. 使用的文档是https://github.com/yiisoft/yii2/tree/master/docs/ ...
- 循序渐进Python3(十一) --5-- 同源策略
一.什么是同源策略 同源策略(Same origin policy)是一种约定,它是浏览器最核心也最基本的安全功能.它是由Netscape提出的一个著名的安全策略,现在所有的可支持javascript ...
- Linux 常用命令 :cd命令
ls命令是linux下最常用的命令.ls命令就是list的缩写缺省下ls用来打印出当前目录的清单如果ls指定其他目录那么就会显示指定目录里的文件及文件夹清单. 通过ls 命令不仅可以查看linu ...
- python动态获取对象的属性和方法 (转载)
首先通过一个例子来看一下本文中可能用到的对象和相关概念. #coding:utf-8 import sys def foo():pass class Cat(object): def __init__ ...
- 使用miniui框架制作树形节点
<div id="leftTree" class="mini-outlooktree" url="<%=basePath%>mana ...
- Shell学习笔记 - 环境变量配置文件(转)
一.source命令 功能:在当前bash环境下读取并执行配置文件中的命令 1. 命令格式 source 配置文件 或 . 配置文件 2. 命令示例 [root@localhost ~]# sou ...
- C++函数重载和函数模板
1.函数重载 这是小菜鸟写的一个例子. 函数重载应该注意以下几点: 1.1重载函数有类似的功能: 1.2只能以参数的类型(形参个数和类型)来重载函数, int max(int a,int b);flo ...
- CodeFirst进行数据迁移之添加字段
一.为模型更改设置 Code First 数据迁移 1.工具->库程序包管理器->程序包管理器控制台->输入"Enable-Migrations" 或者 Ena ...
- mysql 计算日期差
有两个途径可获得 1.利用TO_DAYS函数 select to_days(now()) - to_days('20140831') 2.利用DATEDIFF函数 select dat ...
- java多线程详解(4)-多线程同步技术与lock
前言:本篇文章是对Synchronized和java.util.concurrent.locks.Lock的区别进行了详细的分析介绍 上一篇文章末最后介绍了synchronized的一些缺陷,本文主要 ...