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 ...
随机推荐
- 《IT蓝豹》完整阅读软件客户端app
完整阅读软件客户端app,本项目里面还有扫描功能,搜索本地书籍,不过扫码功能通过c++层实现的. 本项目来自:https://github.com/JayFang1993/ScanBook Captu ...
- block的初识
block的介绍: Block是iOS4.0之后新增的一种语法结构,也称为“闭包(closure)”. SDK4.0新增的API大量使用了Block. Block是一个匿名的函数代码块,此代码 ...
- JavaScript DOM编程艺术读书笔记(三)
第七章 动态创建标记 在web浏览器中往文档添加标记,先回顾下过去使用的技术: <body> <script type="text/javascript"> ...
- HTTP Error 503. The service is unavailable
网站运行一段时间后,突然所有的页面都报告以下错误: HTTP Error 503. The service is unavailable 经检查,应用程序池自动停止,可能是工作进程抛出的异常数超出限制 ...
- REMOVE ONCLICK DELAY ON WEBKIT FOR IPHONE
Developing on the webkit for iPhone I encountered a curious delay ononClick events. It seems that th ...
- LeetCode OJ 114. Flatten Binary Tree to Linked List
Given a binary tree, flatten it to a linked list in-place. For example,Given 1 / \ 2 5 / \ \ 3 4 6 T ...
- jq 部分用法
这几天一直在写前台,因为jq是在客服端处理数据的,所以公司,一般都用这种方法,下面是我这几天用到的一些东西 1.修改table表格的第一轮显示值 function changeTableRowValu ...
- java的Iterator源码浅析
在java的集合中,List接口继承Collection接口,AbstractList类实现了List接口,在AbstractList中的内部类Itr实现了Iterator接口 ArrayList实现 ...
- VBA Excel 对比两列数据
Sub Md() ' ' Macro1 Macro ' 宏由 BX 录制,时间: 2012-6-8 ' 宏中的列数可以输入 A - IV 也可以输入 1-256 ' Dim i%, j%, i1%, ...
- vs2010 A selected drive is no longer valid
visual studio 2010重新安装添加组件,报A selected drive is no longer valid错误. 这个是由于已经安装了sp1,此时需要将sp1卸载掉,然后就可以安装 ...