properties的两个疑问
来源:8-3 后台获取商品详情功能开发及PropertiesUtil配置工具,DateTimeUtil时间处理工具开发
精慕门3403802
2019-01-30
先贴老师的代码
public class PropertiesUtil {
// 将配置文件对象设置为私有的,外部通过自定义的方法获取value
private static Properties props;
private static Logger logger = LoggerFactory.getLogger(PropertiesUtil.class);
static {
ClassLoader classLoader = Properties.class.getClassLoader();
InputStream resourceAsStream = classLoader.getResourceAsStream(“mmall.properties”);
try {
//将从配置文件读取的字节流,用utf-8的编码方式转变为字符流,然后再放入配置文件对象props中,防止中文乱码
InputStreamReader inputStreamReader = new InputStreamReader(resourceAsStream,“utf-8”);
props.load(resourceAsStream);
} catch (IOException e) {
logger.error(“mmall.properties配置文件读取异常”+e.getMessage());
}
}
//通过key获得value,value不存在,返回null
public static String getPropertiesValue(String key){
//避免properties的key和value前后有空格
String value = props.getProperty(key.trim());
if(StringUtils.isBlank(value)){
return null;
}
return value.trim();
}
//通过key获得value,value不存在,返回传入的默认值defaultValue
public static String getProperty(String key,String defaultValue){
String value = props.getProperty(key.trim());
if(StringUtils.isBlank(value)){
value = defaultValue;
}
return value.trim();
}
疑问一:为什么不把 Properties props设置为public,这样就可以直接在外部掉props的getproperties()方法获取value了,至于value不存在时,将value设置为想要的默认值,可以跟老师一样,自定义个方法。
疑问二:为什么用InputStreamReader,将获得的字节流变为字符流再读入props中,直接读取字节流不可以吗?
1回答
-
亲爱的同学,你好,我是geely老师的助教。
首先,第一个问题,如果把Properties开放出去,那就会到处都是有Properties,到处都是getproperties()方法,所以,为什么不直接封装一个呢?如果有一天需要修改这个getproperties()方法,只需要修改一个地方,而不必到处去找getproperties()修改。
第二个问题,这是一个使用流读取文件的解决方案,关于你具体使用什么流,那看你自己的喜好,只要能达到最终效果就行。
012019-01-30
相似问题