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回答

geelylucky

2019-01-30

亲爱的同学,你好,我是geely老师的助教。

首先,第一个问题,如果把Properties开放出去,那就会到处都是有Properties,到处都是getproperties()方法,所以,为什么不直接封装一个呢?如果有一天需要修改这个getproperties()方法,只需要修改一个地方,而不必到处去找getproperties()修改。

第二个问题,这是一个使用流读取文件的解决方案,关于你具体使用什么流,那看你自己的喜好,只要能达到最终效果就行。

0
1
精慕门3403802
非常感谢!
2019-01-30
共1条回复

从0开始 独立完成企业级Java电商网站服务端开发

前后端分离,数据库接口设计,架构设计,功能开发,上线运维

9504 学习 · 8820 问题

查看课程