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. String Start!

    (1)Ransom Note 解题思路: 题目叫做Ransom Note,勒索信.勒索信,为了不暴露字迹,就从杂志上搜索各个需要的字母,组成单词来表达的意思.这样来说,题目也就清晰了,判断杂志上的字是 ...

  2. Linux课程实践二:编译模块实现内核数据操控

    一.内核模块原理 1. Linux内核增加功能 Linux内核整体结构很庞大,包含了很多的组件,现在有两种方法将需要的功能包含进内核当中: - 静态加载:将所有的功能都编译进Linux内核. - 动态 ...

  3. Eclipse 关联项目的源码

    Eclipse 关联项目的源码 1.jdk源码的关联: 一般jdk自带的类,显示其源码的方式: 用jdk自带的src.zip吧:我的JDK目录是:D:\Java\jdk1.6.0_10 , JRE目录 ...

  4. Struts框架——(三)动态ActionForm

    一.DynaActionForm的引入意义 使用ActionForm把表单数据单独封装起来,而且提供了自动的数据验证,简化了代码的编写,给我们带来了极大的方便. 但是,ActionForm也存在一些明 ...

  5. mysql 计算日期差

    有两个途径可获得   1.利用TO_DAYS函数   select to_days(now()) - to_days('20140831')   2.利用DATEDIFF函数   select dat ...

  6. C# 将文件嵌入DLL 。Log4net 配置

    最近在弄使用Log4net记录日志. 将配置文件封装到的DLL中. 封装步骤: 1.将配置文件添加到类库中. 2.在配置文件上右键,选择属性. 3. 此时生成类库.DLL中就存在该配置文件啦.如图: ...

  7. .net加密解密

    .net加密概述 .net加密编程模型 .net加密解密类

  8. Spring Boot项目的打包和部署

    补充一点:搜索了下别人Spring Boot部署方案,大多都说:①packaging设为war:②要添加Spring Boot的tomcat依赖:③修改output路径,但是使用STS新建Spring ...

  9. 6. Adapter Class/Object(适配器)

    意图: 将一个类的接口转换成客户希望的另外一个接口.Adapter 模式使得原本由于接口不兼容而不能一起工作的那些类可以一起工作. 适用性: 你想使用一个已经存在的类,而它的接口不符合你的需求. 你想 ...

  10. OleDb 内存泄露问题

    近期在定位问题时发现使用OleDb打开很大的Excel文件后,即使什么都不操作Colse掉,内存释放了部分,但是并未回到打开前的水平.在Excel 150M,解压缩后900M的场景下,打开后直接Clo ...