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配置文件总结的更多相关文章

  1. java读取properties配置文件信息

    一.Java Properties类 Java中有个比较重要的类Properties(Java.util.Properties),主要用于读取Java的配置文件,各种语言都有自己所支持的配置文件,配置 ...

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

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

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

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

  4. Java 读取 .properties 配置文件

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

  5. Java读取properties配置文件工具类

    1.   PropertyUtils.java package javax.utils; import java.io.InputStream; import java.util.Properties ...

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

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

  7. Java读取Properties配置文件

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

  8. java读取properties配置文件的方法

    app.properties mail.smtp.host=smtp.163.com mail.transport.protocol=smtp import java.io.InputStream; ...

  9. Java读取.properties配置文件并连接数据库

    1.读取配置文件 //Properties集合 流对象读取键值对 public static void getNum() throws Exception { Properties p=new Pro ...

随机推荐

  1. C++primer 练习15.26

    定义Quote和Bulk_Quote的拷贝控制成员,令其与合成的版本行为一致.为这些成员以及其他构造函数添加打印状态的 语句,使得我们能够知道正在运行哪个程序.使用这些类编写程序,预测程序将创建和销毁 ...

  2. cordova 日曆 聯系人 插件使用

    日曆插件 聯係人插件 我用聯係人插件, function onSuccess(contact) { alert("Save Success"); }; function onErr ...

  3. Java Applet与Java Application的特点

    java application是应用程序,用于桌面开发,java applet是小应用程序,一般嵌入到网页里运行.applet一般用于B/S页面上作为插件式的开发,而application主要是桌面 ...

  4. ASP.NET常用内置对象

    ASP.NET 常用内置对象:Response对象.Request对象.Session对象.Server对象.Application对象 1.Response对象: (1) 用于向浏览器输出信息 常用 ...

  5. 14.5.2 Changing the Number or Size of InnoDB Redo Log Files 改变InnoDB Redo Log Files的数量

    14.5.2 Changing the Number or Size of InnoDB Redo Log Files 改变InnoDB Redo Log Files的数量 改变InnoDB redo ...

  6. [转] spring事务管理几种方式

    前段时间对Spring的事务配置做了比较深入的研究,在此之间对Spring的事务配置虽说也配置过,但是一直没有一个清楚的认识.通过这次的学习发觉Spring的事务配置只要把思路理清,还是比较好掌握的. ...

  7. awk小例子_2_数值统计脚本

    通信公司工作,经常处理各种协议接口,在统计协议接口字段内容时,需要统计字段填写的内容是否正确,和占比是多少.要是单次统计,估计会把人累死,写个脚本统计,轻松便捷. 举例:接口内容 这是一条话单,这样的 ...

  8. [转载]Black-Scholes 模型中 d1,d2 是怎么得到的?如何理解 Black-Scholes 模型?

    https://www.optbbs.com/thread-253244-1-1.html

  9. eclipse get set 自动添加注释

    编码的时候通常要用到 JavaBean ,而在我们经常把注释写在字段上面,但生成的Get/Set方法不会生成,通过修改Eclipse源码可解决,直接上例子: /** * 员工ID */ private ...

  10. loj#2071. 「JSOI2016」最佳团体

    题目链接 loj#2071. 「JSOI2016」最佳团体 题解 树形dp强行01分规 代码 #include<cstdio> #include<cstring> #inclu ...