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 ...
随机推荐
- Delphi 完整的Bug决议工具EurekaLog的使用
http://blog.csdn.net/akof1314/article/details/6968587 Delphi 完整的Bug决议工具EurekaLog的使用 标签: delphi工具ftp ...
- IELTS Writing Tips
- linux下redis的安装与部署及基础命令
<1>下载安装文件:redis-3.2.5.tar.gz 放在opt目录下 <2> tar -zxvf redis-3.2.5.tar.gz,备份redis.conf到自己的目 ...
- Git项目存放位置在导入Eclipse前不能存放在Eclipse Workspace
这篇帖子的背景: 本人想将一个git项目导入至Eclipse的Workspace中,并且该项目的所有git信息.但是,该git项目在导入之前,就已经存放在Eclipse的Workspace中.在将该g ...
- C. Shaass and Lights 组合数学
http://codeforces.com/contest/294/problem/C 把那个数组n分段了,那么有两类. 1.开头和端点那些,就是只有一端在开始的,这个时候,要开完这些灯,只能循序渐进 ...
- hdu 1398 Square Coins (母函数)
Square Coins Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Tota ...
- 动态设置 button的 name 的话 闪动的问题 解决
其实 只要把 button设置成 custom 的 type 的话 就会 解决这个问题
- Appium移动自动化测试之安装Android SDK和JDK
安装好Appium后,我们来继续安装Android SDK和JDK,JDK的安装以及环境变量配置这边就不再多说了,毕竟都是从事自动化的,这个应该是so easy.闲言少续,我们来操作Android S ...
- c++模板使用出错情况error LNK2019: unresolved external symbol "public: float __thiscall Compare<float>::min(void)" (?min@?$Compare@M@@QAEMXZ) referenced in function _main
将类模板在头文件中定义,类的成员函数在头文件中声明,头文件中只留下接口,函数的实现在另一个.cpp文件中,这样编译出来错误error LNK2019: unresolved external symb ...
- ios UILabel在storyBoard或xib中如何在每行文字不显示完就换行
大家知道怎么用代码让label中的文字换行,只需要 label.numberOfLines = 0; label.text = @"这是第一行啦啦啦啦,\n这是第二行啦啦,\n这是第三行&q ...