java 读取配置文件工具类_java工具类之配置文件的读取



配置文件的读取,是开发当中的常用功能。

如放置在classpath下的配置文件key_to_code_dic.properties,内容如下:

# gender and age relation

男=101001

女=101002

0014=102001

1519=102002

2024=102003

2529=102004

3034=102005

3539=102006

4044=102007

4549=102008

5054=102009

5559=102010

6000=102011

通过该功具类,可以实现两个功能:

一是直接读取所配置文件的所有文本内容,

ReadConfigUtil readConfig = new ReadConfigUtil(

"key_to_code_dic.properties", false, "utf-8");

System.out.println(readConfig.getLineConfigTxt());

二是直接读取所配文件中的每个key,

ReadConfigUtil readConfig = new ReadConfigUtil(

"key_to_code_dic.properties", true, "utf-8");

System.out.println(readConfig.getValue("0014"));

源码为:

package com.letv.zel.portrait.utils;

import java.io.BufferedReader;

import java.io.IOException;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.util.Properties;

/**

* 配置文件读取工具类

*

* @author zel

*

*/

public class ReadConfigUtil {

public InputStream in = null;

public BufferedReader br = null;

private Properties config = null;

/**

* 如果所读的文件为文本类型而为key/value型式的话,直接get该属性即可

*/

private String lineConfigTxt;

public String getLineConfigTxt() {

return lineConfigTxt;

}

public void setLineConfigTxt(String lineConfigTxt) {

this.lineConfigTxt = lineConfigTxt;

}

// 此时的configFilePath若是非普通文件,即properties文件的话,要另行处理

public ReadConfigUtil(String configFilePath, boolean isConfig,

String encoding) {

in = ReadConfigUtil.class.getClassLoader().getResourceAsStream(

configFilePath);

try {

if (isConfig) {

config = new Properties();

config.load(in);

in.close();

} else {

br = new BufferedReader(new InputStreamReader(in, encoding));

this.lineConfigTxt = getTextLines();

}

} catch (IOException e) {

System.out.println("加载配置文件时,出现问题!");

}

}

// 此时的configFilePath若是非普通文件,即properties文件的话,要另行处理

public ReadConfigUtil(String configFilePath, boolean isConfig) {

in = ReadConfigUtil.class.getClassLoader().getResourceAsStream(

configFilePath);

try {

if (isConfig) {

config = new Properties();

config.load(new InputStreamReader(in,

StaticValue.default_encoding));

in.close();

} else {

br = new BufferedReader(new InputStreamReader(in));

this.lineConfigTxt = getTextLines();

}

} catch (IOException e) {

System.out.println("加载配置文件时,出现问题!");

}

}

public String getValue(String key) {

try {

String value = config.getProperty(key);

return value;

} catch (Exception e) {

e.printStackTrace();

System.err.println("ConfigInfoError" + e.toString());

return null;

}

}

private String getTextLines() {

StringBuilder sb = new StringBuilder();

String temp = null;

try {

while ((temp = br.readLine()) != null) {

if (temp.trim().length() > 0 && (!temp.trim().startsWith("#"))) {

sb.append(temp);

sb.append("\n");

}

}

br.close();

return sb.toString();

} catch (Exception e) {

e.printStackTrace();

System.out.println("读取文件型配置文件时,出现问题!");

}

return sb.toString();

}

public static void main(String args[]) {

ReadConfigUtil readConfig = new ReadConfigUtil(

"key_to_code_dic.properties", true, "utf-8");

System.out.println(readConfig.getValue("0014"));

// System.out.println(readConfig.getLineConfigTxt());

// System.out.println(readConfig.getTextLines());

// System.out.println(SystemParas.proxyList);

}

}

package com.hexiang.utils; import java.io.File; import java.io.FileInputStream; import java.util.Properties; public class ReadConfigation{ /** * 属性文件全名 */ private static final String PFILE ="Config.properties"; /** * 对应于属性文件的文件对象变量 */ private File m_file = null; /** * 属性文件的最后修改日期 */ private long m_lastModifiedTime = 0; /** * 属性文件所对应的属性对象变量 */ private Properties m_props = null; /** * 本类可能存在的惟一的一个实例 */ private static ReadConfigation m_instance =new ReadConfigation(); /** * 私有的构造子,用以保证外界无法直接实例化 */ private ReadConfigation() { m_file = new File(PFILE); m_lastModifiedTime = m_file.lastModified(); if(m_lastModifiedTime == 0){ System.err.println(PFILE +" file does not exist!"); } m_props = new Properties(); try { m_props.load(new FileInputStream(PFILE)); } catch(Exception e) { e.printStackTrace(); } } /** * 静态工厂方法 * @return 返还ReadConfigation 类的单一实例 */ synchronized public static ReadConfigation getInstance() { return m_instance; } /** * 读取一特定的属性项 * * @param name 属性项的项名 * @param defaultVal 属性项的默认值 * @return 属性项的值(如此项存在), 默认值(如此项不存在) */ public String getConfigItem(String name,String defaultVal) { long newTime = m_file.lastModified(); // 检查属性文件是否被其他程序 // 如果是,重新读取此文件 if(newTime == 0) { // 属性文件不存在 if(m_lastModifiedTime == 0){ System.err.println(PFILE+ " file does not exist!"); }else{ System.err.println(PFILE+ " file was deleted!!"); } return defaultVal; }else if(newTime > m_lastModifiedTime){ // Get rid of the old properties m_props.clear(); try { m_props.load(new FileInputStream(PFILE)); }catch(Exception e){ e.printStackTrace(); } } m_lastModifiedTime = newTime; String val = m_props.getProperty(name); if( val == null ) { return defaultVal; } else { return val; } } /** * 读取一特定的属性项 * * @param name 属性项的项名 * @return 属性项的值(如此项存在), 空(如此项不存在) */ public String getConfigItem(String name){ return getConfigItem(name,""); } }
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值