背景:项目中需要将一些开关值和定值做成配置项,因为主要是key=>value的单一对应,所以做成了Properties类型的配置文件,读取代码如下
package com.eelly.imagesearch.common;
import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.Iterator;
import java.util.Properties;
import java.util.Set;
public class ReadConfigFile {
/**
* 获取配置文件(src目录下)里指定配置项的值
* @param fileName 要读取的配置文件名
* @param id 要读取的配置项id
* @return
*/
public String readPropertiesFile(String fileName, String id)
{
Properties prop = new Properties();
InputStream stream = null;
String configVal = "";
String path = getClass().getResource("/").getPath();
try {
stream = new BufferedInputStream(new FileInputStream(new File(path+fileName)));
prop.load(stream);
Set config_info = prop.keySet();
Iterator it = config_info.iterator();
while(it.hasNext()){
/*String id = (String)it.next();
String value = p.getProperty(id);
System.out.println(id+":="+value);*/
if (id.equals(it.next()))
{
configVal = prop.getProperty(id);
break;
}
}
}catch(Exception e){
e.printStackTrace();
}
return configVal;
}
}
备注:
1.上面的配置文件是放在src目录下,还可以放置在其他目录下(需要同步调整path变量的值)
2.上面的代码主要是依据id读取对应的值,也可以考虑在id为空时,将整个配置文件读到一个map数组里