项目中一般会有多个配置properties文件,写了一个读取的工具类,见类图和代码
类说明:
ClassPathPropsReader:class path properties reader
ClassNamePropsReader:按类名查找properties文件位置,properties文件名和类名相同、放置在同一个包下
PropsReaderFactory:ClassPathPropsReader静态工厂方法类
主要代码:
package properties; import java.io.IOException; import java.util.Properties; /** * class path properties reader * * @author Mov * @version 1.0 Mov 2013-2-2 下午08:21:38 create * @see ClassNamePropsReader * @see PropsReaderFactory */ public abstract class ClassPathPropsReader { private static Properties props; private void init() { if (props == null) { synchronized (this) { props = new Properties(); try { String filePath = getFilePath(); props.load(this.getClass().getClassLoader() .getResourceAsStream(filePath)); } catch (IOException e) { e.printStackTrace(); } } } } /** * 获取properties文件路径 * @return 返回格式如:com/XXX/YYY/Zzz.properties */ protected abstract String getFilePath(); @SuppressWarnings("unchecked") public final <T> T getProperty(String key, T defaultValue) { init(); try { String val = props.getProperty(key, null); Object ret = null; if (val == null || "".equals(val)) { ret = null; } else if (defaultValue instanceof String) { ret = val; } else if (defaultValue instanceof Integer) { ret = Integer.parseInt(val); } else if (defaultValue instanceof Boolean) { ret = val.toLowerCase().equals("true"); } else if (defaultValue instanceof Long) { ret = Long.parseLong(val); } else if (defaultValue instanceof Byte) { ret = Byte.parseByte(val); } else if (defaultValue instanceof Float) { ret = Float.parseFloat(val); } else if (defaultValue instanceof Double) { ret = Double.parseDouble(val); } else if (defaultValue instanceof Character) { ret = val.charAt(0); } else { ret = null; } return ret != null ? (T) ret : defaultValue; } catch (RuntimeException e) { return defaultValue; } } }
package properties; import java.io.File; /** * properties文件名和类名相同、放置在同一个包下 * * <pre> * 如: * 类全名为a.b.c.Test * 则properties文件名为 a\b\c\Test.properties * * 此时可以直接继承{@link #ClassNamePropsReader} * </pre> * * @author Mov * @version 1.0 Mov 2013-2-2 下午08:23:13 create */ public class ClassNamePropsReader extends ClassPathPropsReader { @Override protected String getFilePath() { String fullClassName = this.getClass().getCanonicalName(); return fullClassName.replace('.', File.separatorChar) + ".properties"; } }
package properties; import java.util.HashMap; import java.util.Map; /** * ClassPathPropsReader静态工厂方法类 * * @author Mov * @version 1.0 Mov 2013-2-2 下午08:25:24 create */ public class PropsReaderFactory { private static Map<Class<? extends ClassPathPropsReader>, ClassPathPropsReader> readers = new HashMap<Class<? extends ClassPathPropsReader>, ClassPathPropsReader>(); public static ClassPathPropsReader getInstance(Class<? extends ClassPathPropsReader> cls) { if (readers.get(cls) == null) { try { ClassPathPropsReader reader = cls.newInstance(); readers.put(cls, reader); } catch (InstantiationException e) { e.printStackTrace(); } catch (IllegalAccessException e) { e.printStackTrace(); } } return readers.get(cls); } }
测试:
package properties; import properties.xxx.yyy.HelloWorld; /** * * @author Mov * @version 1.0 Mov 2013-2-2 下午09:03:48 create */ public class Test { public static void main(String[] args) { ClassPathPropsReader reader = PropsReaderFactory.getInstance(HelloWorld.class); String str0 = reader.getProperty("str0", "_____"); String str2 = reader.getProperty("str2", "_____"); System.out.println(str0); System.out.println(str2); int int0 = reader.getProperty("int0", -1); int int2 = reader.getProperty("int2", -1); System.out.println(int0); System.out.println(int2); boolean boolean0 = reader.getProperty("boolean0", Boolean.TRUE); boolean boolean2 = reader.getProperty("boolean2", Boolean.TRUE); System.out.println(boolean0); System.out.println(boolean2); char char0 = reader.getProperty("char0", '_'); System.out.println(char0); } }
缺少的文件在附件中
相关推荐
读取properties文件工具类。使用时直接将工具类放到Java项目中,调用读取properties文件的方法即可。
读取Properties信息工具类,其中main方法中可以直接进行测试
Java读取、修改utils.properties工具类,可直接拿去用。
工具类里分读取.yml工具类和.properties工具类,结合博客描述使用,用不到的方法可根据个人情况删除,
java配置文件修改读取工具类,包括yml和properties类型文件
最近面试java开发,遇到很是蛋疼一道题。题目是写一个java程序批量读取properties文件的数据,按照每列属性每行每行读出来,由于很久都没写过工具类 回来复习了一下简单写了个工具类有兴趣可以看看。
java连接SqlServer完整代码,工具类,jdbc JDBC工具类的构建 1.资源释放 ... ``` ... ...3.使用properties配置文件 1.在src低下声明一个文件XXX.properties 2.在工具类里使用静态代码块读取属性 对应文件位于根目录
java读取properties文件的工具类,传入配置文件名字和其中的key就可以读取
java开发中常用到的工具类。附有帮助文档。可以方便查看。如果需要源码的可以联系我。主要包括http-post请求工具类。日期工具类。字符串工具类。配置文件properties读取工具类。
读取配置文件Key获取Value 读取所有Key和Value,return map Map集合
一个自定义的读取properties工具类,对有需要操作properties非常有用
非常实用的读取配置文件的小工具,专门读取WEB-INF下文件夹中的properties文件,代码简洁、亲测没有问题,适用范围广,任何类中都可调用,传入Key及可得到Value
主要介绍了Java实现的properties文件动态修改并自动保存工具类,可实现针对properties配置文件的相关修改与保存功能,需要的朋友可以参考下
Properties文件是常用的配置文件,读取它的内容需要专门的工具类。
properties文件获取工具类:静态加载properties配置文件,有根据key获取值的方法
import java.util.Properties; public class ReadConfigation{ /** * 属性文件全名 */ private static final String PFILE ="Config.properties"; /** * 对应于属性文件的文件对象变量 */ ...
本类用于连接数据库 连接,使用本类只要输入对应的参数就可以方便使用数据库,简化繁杂的代码 初始化链接数据库所需的变量值 读取dbinfo.properties文档中的参数: driverclass=com.mysql.jdbc.Driver url=jdbc:...
Properties操作工具类(ToolProperties.java),读写Properties文件操作 网络操作工具类(ToolNetwork.java),获取网络信息、更改切换网络等相关操作 日期操作工具类(ToolDateTime.java),获取日期、日期加减、格式...
一个读取配置文件的工具类 希望可以帮助大家哟