在web开发中经常会遇到读取属性配置文件的情况, 下面简单介绍一下我对读取属性文件类的封装:
下面以读取jdbc.properties 为例 :
jdbc.driver=com.mysql.jdbc.Driverjdbc.url=jdbc:mysql://localhost:3306/smartjdbc.username=rootjdbc.password=root
解析来需要读取jdbc.properties 文件, 封装了一个PropsUtil类:
public final class PropsUtil { private static final Logger logger = LoggerFactory.getLogger(PropsUtil.class); /** * 加载属性文件 */ public static Properties loadProps(String fileName) { Properties props = null; InputStream is = null; try { is = Thread.currentThread().getContextClassLoader().getResourceAsStream(fileName); if (is == null) { throw new FileNotFoundException(fileName + " file is not found"); } props = new Properties(); props.load(is); } catch (IOException e) { logger.info("load properties file failure",e); }finally { if (is != null) { try { is.close(); } catch (IOException e) { logger.info("close input stream failure",e); } } } return props; } /** * 获取字符属性(默认值为空字符串) */ public static String getString(Properties props, String key) { return getString(props,key,""); } /** * 获取字符属性(指定默认值) */ public static String getString(Properties props, String key,String defaultValue) { String value = defaultValue; if (props.contains(key)) { value = props.getProperty(key); } return value; } /** * 获取数值型属性 */ public static int getInt(Properties props, String key) { return getInt(props,key,0); } public static int getInt(Properties props, String key, int defaultValue) { int value = defaultValue; if (props.contains(key)) { value = CastUtil.castInt(props.getProperty(key)); } return value; } /** * 获取布尔类型 */ public static boolean getBoolean(Properties props,String key) { return getBoolean(props, key, false); } public static boolean getBoolean(Properties props,String key, Boolean defaultValue) { boolean value = defaultValue; if (props.contains(key)) { value = CastUtil.castBoolean(props.get(key)); } return value; }}
客户端测试调用只需要调用loadPropers() 就可以了:
/** * * 读取配置文件 */public class ReadProperties { public static final Logger logger = LoggerFactory.getLogger(ReadProperties.class); public static void main(String[] args) { Properties props = PropsUtil.loadProps("jdbc.properties"); String driver = props.getProperty("jdbc.driver"); String url = props.getProperty("jdbc.url"); String username = props.getProperty("jdbc.username"); String password = props.getProperty("jdbc.password"); logger.info(driver); logger.info(url); logger.info(username); logger.info(password); }}