配置文件的读取,是开发当中的常用功能。
如放置在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);
}
}