在实际开发中, 为了项目配置的灵活, 参数设置一般都会放到配置文件中, 比如:
log4j.properties jdbc.properties 等等
这些配置文件一般情况下, 使用框架, 交给spring加载, 但是如果让我们自己读取配置信息, 该怎么办?
有一些时候, 我们需要自己根据业务需求, 来读取不同的配置文件信息,
下面案例, 两个方法都可以, 一个静态, 一个动态, 根据需要使用:
package utils;
import java.io.IOException;
import java.util.Properties;
import java.util.ResourceBundle;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author wxy e-mail:[email protected]
* @date 创建时间:2017年5月18日 上午9:28:00
* @version 1.0
* @company: xxx科技公司
* @description: 读取配置文件
* */
public class ReadConfigUtils {
private static Logger logger= LoggerFactory.getLogger(ReadConfigUtils.class);
/**
* @param resourceName 要读取的资源文件名称: 如:jdbc.properties ps:文件的后缀名properties不能传进去,否则报错
* @param property 要读取的资源文件中的某一个属性名: 如url, username, password.....
* @return 返回属性值
*/
public static String getDataFromPropertiseFile(String resourceName, String property) {
if (resourceName == null || "".equals(resourceName)) {
logger.debug("getDataFromPropertiseFile resourceName is null, 读取的资源文件不存在");
return null;
}
if (property == null || "".equals(property)) {
logger.debug("getDataFromPropertiseFile property is null 资源文件中, 没有这个属性值");
return null;
}
ResourceBundle resource = null;
try {
resource = ResourceBundle.getBundle(resourceName);
if (resource == null) {
logger.debug(resourceName + "配置文件不存在");
return null;
}
return resource.getString(property);
} catch (Exception e) {
logger.error(resourceName + "配置文件不存在", e);
return null;
}
}
/**
* 这是一个读取.properties配置文件的类, 如jdbc.properties.
* @param str 读取的配置文件路径, 默认路径是classpath下
*
* @return 返回读取好的配置文件信息 这个返回值可以用.getProperty("属性名") 拿到相对应的属性值.
*/
public Properties readConfig(String str) {
Properties prop = new Properties();
try {
prop.load(this.getClass().getClassLoader().getResourceAsStream(str));
} catch (NullPointerException e2) {
e2.printStackTrace();
System.out.println("空指针异常, 找不到这个配置文件");
return null;
} catch (IOException e3) {
e3.printStackTrace();
System.out.println("流读取异常");
return null;
}catch (Exception e) {
e.printStackTrace();
System.out.println("读取配置文件信息: " + str + " 失败");
return null;
}
return prop;
}
/**
* 验证方法
*
* @throws Exception
*/
public static void main(String[] args) {
ReadConfigUtils r = new ReadConfigUtils();
Properties config = r.readConfig("wxy/demo/jdbc2.properties");
// Properties config = r.readConfig("jdbc.properties");
System.out.println("123");
System.out.println(config.getProperty("name"));
System.out.println(config.getProperty("password"));
System.out.println(config.getProperty("wxy"));
System.out.println("....................分割线............................");
String value = ReadConfigUtils.getDataFromPropertiseFile("wxy/demo/jdbc2", "name");
System.out.println(value);
}
}