- 浏览: 236052 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
月度银墙:
wangxiang243 写道不错 !但是ext4中六月和十二 ...
ext2,3,和4 版本 只显示年月的日期插件 -
38123978:
你好,我最近在看cassandra的性能,我想问一下5000万 ...
Cassandra学习笔记3 -
zhaojinmeng:
您好楼主,extjs5要怎么扩展啊?求指导
ext2,3,和4 版本 只显示年月的日期插件 -
love_wting:
为什么下拉框的表格样式显示了,数据访问json也从数据库中取到 ...
Extjs 下拉grid -
laungcisin:
yangxiutian 写道另外Ext4.2.1还故意把x-m ...
ext2,3,和4 版本 只显示年月的日期插件
package com.lbxdrugs.core.utils; import java.io.FileNotFoundException; import java.io.IOException; import java.util.Enumeration; import java.util.Hashtable; import java.util.Properties; import org.apache.log4j.Logger; /** * properties文件读写操作工具类 * @version 1.0 */ public class PropertyReader { private static Logger _log = Logger.getLogger(PropertyReader.class); private static Hashtable<string , Properties> pptContainer = new Hashtable</string><string , Properties>(); /** * * 方法用途和描述: 获得属性文件中Key所对应的值 * * @param propertyFilePath * 属性文件路径(包括类路径或文件系统中文件路径) * @param key * 属性的键 * @param isAbsolutePath * 是否为绝对路径:true|false〔即是本地文件系统路径,比如:C:/test.propreties〕<br /> * <br /> * <b>注:</b>不能通过类路径来获取到属性文件,而只知道属性文件的文件系统路径,即文件系统地址则用此方法来 获取其中的Key所对应的Value * @return key的属性值 * @author dengcd 新增日期:2008-10-9 * @author 你的姓名 修改日期:2008-10-9 * @since wapportal_manager version(2.0) */ public final static String getValue(String propertyFilePath, String key ) { Properties ppts = getProperties(propertyFilePath); return ppts == null ? null :CharsetUtil.toGbk(ppts.getProperty(key)); } /** * * 方法用途和描述: 获得属性文件中Key所对应的值 * * @param propertyFilePath * 属性文件路径(包括类路径或文件系统中文件路径) * @param key * 属性的键 * @param isreload 是否重新加载配置 * @param isAbsolutePath * 是否为绝对路径:true|false〔即是本地文件系统路径,比如:C:/test.propreties〕<br /> * <br /> * <b>注:</b>不能通过类路径来获取到属性文件,而只知道属性文件的文件系统路径,即文件系统地址则用此方法来 获取其中的Key所对应的Value * @return key的属性值 * @author dengcd 新增日期:2008-10-9 * @author 你的姓名 修改日期:2008-10-9 * @since wapportal_manager version(2.0) */ public final static String getValue(String propertyFilePath, String key ,boolean isreload) { long ts=System.currentTimeMillis(); Properties ppts = getProperties2(propertyFilePath,isreload); String ret= ppts == null ? null :CharsetUtil.toGbk(ppts.getProperty(key)); long te=System.currentTimeMillis(); MixUtil.log_info("PropertyReader.getValue(propertyFilePath,key,reload)", "获取[key="+key+"]消耗时间:"+(te- ts)+"毫秒!"); return ret; } /** * 获取配置键 * @param propertyFilePath * @return */ public static Enumeration<object> getkeys(String propertyFilePath ){ Properties ppts = getProperties(propertyFilePath); return ppts.keys(); } /** * 是否重新加載 */ private static boolean isreload=false; public static boolean isIsreload() { return isreload; } public static void setIsreload(boolean isreload) { PropertyReader.isreload = isreload; } /** * * 方法用途和描述: 获得属性文件的属性 * * @param propertyFilePath * 属性文件(包括类路径) * @return 属性 * @author dengcd 新增日期:2008-10-9 * @author 你的姓名 修改日期:2008-10-9 * @since wapportal_manager version(2.0) */ public final static Properties getProperties(String propertyFilePath) { if (propertyFilePath == null) { _log.error("配置文件变量为空值【propertyFilePath is null】!"); return null; } Properties ppts = pptContainer.get(propertyFilePath); if (ppts == null||isIsreload()) { ppts = loadPropertyFile(propertyFilePath); if (ppts != null) { pptContainer.put(propertyFilePath, ppts); } } return ppts; } /** * * 方法用途和描述: 获得属性文件的属性 * * @param propertyFilePath * 属性文件(包括类路径) * @return 属性 * @author dengcd 新增日期:2008-10-9 * @author 你的姓名 修改日期:2008-10-9 * @since wapportal_manager version(2.0) */ public final static Properties getProperties2(String propertyFilePath,boolean isreload) { if (propertyFilePath == null) { _log.error("配置文件变量为空值【propertyFilePath is null】!"); return null; } Properties ppts = pptContainer.get(propertyFilePath); if (ppts == null||isreload) { ppts = loadPropertyFile(propertyFilePath); if (ppts != null) { pptContainer.put(propertyFilePath, ppts); } } return ppts; } /** * * 方法用途和描述: 获得属性文件的属性 * * @param propertyFilePath * 属性文件路径(包括类路径及文件系统路径) * @return 属性文件对象 Properties * @author dengcd 新增日期:2008-10-9 * @author 你的姓名 修改日期:2008-10-9 * @since wapportal_manager version(2.0) */ public final static Properties getPropertiesByFs(String propertyFilePath) { if (propertyFilePath == null) { _log.error("propertyFilePath is null!"); return null; } Properties ppts = pptContainer.get(propertyFilePath); if (ppts == null) { ppts = loadPropertyFileByFileSystem(propertyFilePath); if (ppts != null) { pptContainer.put(propertyFilePath, ppts); } } return ppts; } /** * * 方法用途和描述: 加载属性 * * @param propertyFilePath * 属性文件(包括类路径) * @return 属性 * @author dengcd 新增日期:2008-10-9 * @author 你的姓名 修改日期:2008-10-9 * @since wapportal_manager version(2.0) */ private static Properties loadPropertyFile(String propertyFilePath) { java.io.InputStream is = PropertyReader.class .getResourceAsStream(propertyFilePath); if (is == null) { return loadPropertyFileByFileSystem(propertyFilePath); } Properties ppts = new Properties(); try { ppts.load(is); return ppts; } catch (Exception e) { _log.debug("加载属性文件出错:" + propertyFilePath, e); return null; } } /** * * 方法用途和描述: 从文件系统加载属性文件 * * @param propertyFilePath * 属性文件(文件系统的文件路径) * @return 属性 * @author dengcd 新增日期:2008-10-9 * @author 你的姓名 修改日期:2008-10-9 * @since wapportal_manager version(2.0) */ private static Properties loadPropertyFileByFileSystem( final String propertyFilePath) { try { Properties ppts = new Properties(); ppts.load(new java.io.FileInputStream(propertyFilePath)); return ppts; } catch (java.io.FileNotFoundException e) { _log.error("FileInputStream(\"" + propertyFilePath + "\")! FileNotFoundException: " + e); return null; } catch (java.io.IOException e) { _log.error("Properties.load(InputStream)! IOException: " + e); return null; } } /** * * 方法用途和描述: 对存在的属性文件中添加键值对并保存 * * @param propertyFilePath * 属性文件的路径(包括类路径及文件系统路径) * @param htKeyValue * 键值对Hashtable * @return * @author dengcd 新增日期:2008-10-9 * @author 你的姓名 修改日期:2008-10-9 * @since wapportal_manager version(2.0) */ public final static boolean setValueAndStore(String propertyFilePath, java.util.Hashtable<string , String> htKeyValue) { return setValueAndStore(propertyFilePath, htKeyValue, null); } /** * * 方法用途和描述: 对存在的属性文件中添加键值对并保存 * * @param propertyFilePath * 属性文件的路径(包括类路径及文件系统路径) * @param htKeyValue * 键值对Hashtable * @param storeMsg * 保存时添加的附加信息(注释) * @return * @author dengcd 新增日期:2008-10-9 * @author 你的姓名 修改日期:2008-10-9 * @since wapportal_manager version(2.0) */ public final static boolean setValueAndStore(String propertyFilePath, java.util.Hashtable</string><string , String> htKeyValue, String storeMsg) { Properties ppts = getProperties(propertyFilePath); if (ppts == null || htKeyValue == null) { return false; } ppts.putAll(htKeyValue); java.io.OutputStream stream = null; try { stream = new java.io.FileOutputStream(propertyFilePath); } catch (FileNotFoundException e) { _log.debug("propertyFilePath = " + propertyFilePath); String path = PropertyReader.class.getResource(propertyFilePath) .getPath(); _log.debug("~~~~~~~~path~~~XXX~~~~~" + path); try { stream = new java.io.FileOutputStream(path); } catch (FileNotFoundException e1) { _log.error("FileNotFoundException! path=" + propertyFilePath); return false; } } if (stream == null) { return false; } try { ppts.store(stream, storeMsg != null ? storeMsg : "set value and store."); return true; } catch (java.io.IOException e) { e.printStackTrace(); return false; } finally { if (stream != null) { try { stream.close(); } catch (IOException e) { e.printStackTrace(); } } } } /** * * 方法用途和描述: 创建属性文件 * * @param propertyFilePath * 要存储属性文件的路径 * @param htKeyValue * 属性文件中的键值对Hashtable * @return * @author dengcd 新增日期:2008-10-9 * @author 你的姓名 修改日期:2008-10-9 * @since wapportal_manager version(2.0) */ public final static boolean createPropertiesFile(String propertyFilePath, java.util.Hashtable</string><string , String> htKeyValue) { java.io.File file = new java.io.File(propertyFilePath); if (!file.exists()) { try { file.createNewFile(); } catch (java.io.IOException e) { e.printStackTrace(); } } return setValueAndStore(propertyFilePath, htKeyValue, "create properties file:" + file.getName()); } /** * * 方法用途和描述:设置属性值 * * @param propertyFilePath * 属性文件(包括类路径) * @param key * 属性键 * @param value * 属性值 * @return * @author dengcd 新增日期:2008-10-9 * @author 你的姓名 修改日期:2008-10-9 * @since wapportal_manager version(2.0) */ public final static boolean setValue(String propertyFilePath, String key, String value) { Properties ppts = getProperties(propertyFilePath); if (ppts == null) { return false; } ppts.put(key, value); return true; } /** * * 方法用途和描述: 保存属性文件对象 * * @param properties * 属性文件对象 * @param propertyFilePath * 要保存的路径 * @param msg * 保存时添加的附加信息(注释) * @author dengcd 新增日期:2008-10-9 * @author 你的姓名 修改日期:2008-10-9 * @since wapportal_manager version(2.0) */ public final static void store(Properties properties, String propertyFilePath, String msg) { try { java.io.OutputStream stream = new java.io.FileOutputStream( propertyFilePath); properties.store(stream, msg); } catch (java.io.FileNotFoundException e) { _log.error("FileOutputStream(" + propertyFilePath + ")! FileNotFoundException: " + e); } catch (java.io.IOException e) { _log.error("store(stream, msg)! IOException: " + e); e.printStackTrace(); } } /** * * 方法用途和描述: 删除属性值 * * @param propertyFilePath * 属性文件(包括类路径) * @param key * 属性键 * @return * @author dengcd 新增日期:2008-10-9 * @author 你的姓名 修改日期:2008-10-9 * @since wapportal_manager version(2.0) */ public final static String removeValue(String propertyFilePath, String key) { Properties ppts = getProperties(propertyFilePath); if (ppts == null) { return null; } return (String) ppts.remove(key); } /** * * 方法用途和描述: 删除属性文件中的Key数组所对应的键值对 * * @param propertyFilePath * 属性文件路径(包括类路径及文件系统路径) * @param key * key数组 * @return 属性文件对象 * @author dengcd 新增日期:2008-10-9 * @author 你的姓名 修改日期:2008-10-9 * @since wapportal_manager version(2.0) */ public final static Properties removeValue(String propertyFilePath, String[] key) { if (key == null) { _log.error("key[] is null!"); return null; } Properties ppts = getProperties(propertyFilePath); if (ppts == null) { return null; } for (String strKey : key) { ppts.remove(strKey); } return ppts; } /** * * 方法用途和描述:删除属性文件中的Key数组所对应的键值对,并将属性文件对象持久化(即保存) * * * @param propertyFilePath * 属性文件路径(包括类路径及文件系统路径) * @param key * 属性文件中的key数组 * @return 成功与否(true|false) * @author dengcd 新增日期:2008-10-9 * @author 你的姓名 修改日期:2008-10-9 * @since wapportal_manager version(2.0) */ public final static boolean removeValueAndStore(String propertyFilePath, String[] key) { Properties ppts = removeValue(propertyFilePath, key); if (ppts == null) { return false; } store(ppts, propertyFilePath, "batch remove key value!"); return true; } /** * * 方法用途和描述: 更新指定路径的属性文件中的键所对应的值 * * @param propertyFilePath * 属性文件路径(包括类路径及文件系统路径) * @param key * 属性文件中的key * @param newValue * 要更新的新值 * @return 成功与否(true|false) * @author dengcd 新增日期:2008-10-9 * @author 你的姓名 修改日期:2008-10-9 * @since wapportal_manager version(2.0) */ public final static boolean updateValue(String propertyFilePath, String key, String newValue) { if (key == null || newValue == null) { _log.error("key or newValue is null!"); return false; } java.util.Hashtable</string><string , String> ht = new java.util.Hashtable</string><string , String>(); ht.put(key, newValue); return setValueAndStore(propertyFilePath, ht, "update " + key + "'s value!"); } /** * * 方法用途和描述: 批量更新指定路径的属性文件中的键所对应的值 * * @param propertyFilePath * 属性文件路径(包括类路径及文件系统路径) * @param htKeyValue * 要更新的键值对Hashtable * @return 成功与否(true|false) * @author dengcd 新增日期:2008-10-9 * @author 你的姓名 修改日期:2008-10-9 * @since wapportal_manager version(2.0) */ public final static boolean batchUpdateValue(String propertyFilePath, java.util.Hashtable</string><string , String> htKeyValue) { if (propertyFilePath == null || htKeyValue == null) { return false; } return setValueAndStore(propertyFilePath, htKeyValue, "batch update key value!"); } /** * * 方法用途和描述: 移除加载的属性文件 * * @param propertyFilePath * 属性文件(包括类路径) * @return * @author dengcd 新增日期:2008-10-9 * @author 你的姓名 修改日期:2008-10-9 * @since wapportal_manager version(2.0) */ public final static Properties removePropertyFile(String propertyFilePath) { return pptContainer.remove(propertyFilePath); } /** * * 方法用途和描述: 重新加载某个Property文件 * * @param propertyFilePath * 要重新加载的Property文件,如果当前内存中没有的话则加载,否则替换 * @author dengcd 新增日期:2008-10-9 * @author 你的姓名 修改日期:2008-10-9 * @since wapportal_manager version(2.0) */ public final static void reloadPropertyFile(String propertyFilePath) { pptContainer.remove(propertyFilePath); loadPropertyFile(propertyFilePath); } /** * * 方法用途和描述: 获得属性文件的路径 * * @param pkg * 包名 * @param propertyFileName * 属性文件名 * @return * @author dengcd 新增日期:2008-10-9 * @author 你的姓名 修改日期:2008-10-9 * @since wapportal_manager version(2.0) */ public final static String getPpropertyFilePath(String pkg, String propertyFileName) { pkg = pkg == null ? "" : pkg.replaceAll("\\.", "/"); propertyFileName = propertyFileName.endsWith(".properties") ? propertyFileName : (propertyFileName + ".properties"); return "/" + pkg + "/" + propertyFileName; } public static void main(String[] args) { String path = "/ora-message_ch.properties"; getProperties(path); String v = PropertyReader.getValue(path,"00054"); // v=CharsetUtil.toGbk(v); System.out.println("value0 = " + v); // // Hashtable</string><string , String> ht = new Hashtable</string><string , String>(); // ht.put("name", "dengcd"); // PropertyReader.setValueAndStore(path, ht); // String v_ = PropertyReader.getValue(path, "name"); // _log.info("value1 = " + v_); // PropertyReader.reloadPropertyFile(path); // String v2_ = PropertyReader.getValue(path, "name"); // _log.info("value2 = " + v2_); } } </string></object></string>
转自:http://www.devdoc.org/index.php/archives/477
相关推荐
读/写属性文件的工具类. PropertyUtil.java对Property文件读写进行了封装, 使开发人员对Property文件的读写更加容易。 在性能、实用性 方面还是可以的。
我们要做的第一步是要将文件读取到Properties类对象中,由于load有一个参数是InputStream,所以我们可以用 InputStream的子类FileInputStream将属性文件读取到Properties对象中,知道prop.properties的路径,我们...
Properties操作工具类(ToolProperties.java),读写Properties文件操作 网络操作工具类(ToolNetwork.java),获取网络信息、更改切换网络等相关操作 日期操作工具类(ToolDateTime.java),获取日期、日期加减、格式...
Properties操作工具类(ToolProperties.java),读写Properties文件操作 网络操作工具类(ToolNetwork.java),获取网络信息、更改切换网络等相关操作 日期操作工具类(ToolDateTime.java),获取日期、日期加减、格式...
Properties操作工具类(ToolProperties.java),读写Properties文件操作 网络操作工具类(ToolNetwork.java),获取网络信息、更改切换网络等相关操作 日期操作工具类(ToolDateTime.java),获取日期、日期加减、...
Properties操作工具类(ToolProperties.java),读写Properties文件操作 网络操作工具类(ToolNetwork.java),获取网络信息、更改切换网络等相关操作 日期操作工具类(ToolDateTime.java),获取日期、日期加减、...
..\辅助工具类 ..\..........\util ..\..........\....\CastorHandler.java ..\..........\....\DbUtil.java ..\..........\....\Debug.java ..\..........\....\FileUtil.java ..\..........\....\...
实例147 随机读写Java类文件 221 第3篇 Java面向对象编程 第8章 面向对象(教学视频:72分钟) 226 8.1 类 226 实例148 简单的通讯录类 226 实例149 简单的长度单位转换类 227 实例150 ...
实例147 随机读写Java类文件 221 第3篇 Java面向对象编程 第8章 面向对象(教学视频:72分钟) 226 8.1 类 226 实例148 简单的通讯录类 226 实例149 简单的长度单位转换类 227 实例150 卡车和卡车司机之间的关系 229...
实例147 随机读写Java类文件 221 第3篇 Java面向对象编程 第8章 面向对象(教学视频:72分钟) 226 8.1 类 226 实例148 简单的通讯录类 226 实例149 简单的长度单位转换类 227 实例150 卡车和...
实例147 随机读写Java类文件 221 第3篇 Java面向对象编程 第8章 面向对象(教学视频:72分钟) 226 8.1 类 226 实例148 简单的通讯录类 226 实例149 简单的长度单位转换类 227 实例150 卡车和卡车司机之间的...
实例147 随机读写Java类文件 221 第3篇 Java面向对象编程 第8章 面向对象(教学视频:72分钟) 226 8.1 类 226 实例148 简单的通讯录类 226 实例149 简单的长度单位转换类 227 实例150 卡车和卡车司机之间的关系 229...
11.2.2使用File类操作文件 11.2.3使用File类操作目录 11.3字节流的输入输出 11.3.1认识字节流 11.3.2如何读写文件 11.3.3如何读写对象 11.4字符流的输入输出 11.4.1认识字符流 11.4.2如何读写文件 11.4.3...
目录结构 downloader(网页请求处理工具类) httpclientDownloader apache的Httpclient包封装网页下载器 JsoupDownloader Jsoup封装下载,支持get,post,设置header和...PropertiesUtils 获取java Properties装备对象
常用编码工具类,支持base64,md5,des,crc32 也谈谈技术面试 在C#里把ArrayList转换为Array 或 把Array转换为ArrayList C# 2.0 在.NET 2.0中,让你的组件也可以绑定 .NET20 一种简单的窗口控件UI状态控制方法 翻译MSDN...
2.2.2 struts 2属性配置文件struts.properties详解 55 2.2.3 struts 2核心配置文件struts.xml详解 57 2.3 struts 2应用开发实务 61 2.3.1 struts 2应用开发环境的搭建 62 2.3.2 struts 2应用基本开发步骤—搭建...
Spring+SpringMVC+Mybatis框架集成公共模块,包括公共配置、MybatisGenerator扩展插件、通用BaseService、工具类等。 > zheng-admin 基于bootstrap实现的响应式Material Design风格的通用后台管理系统,`zheng`...
飞趣社区开源版使用了hutool工具类作支撑,同时参考了zheng项目以及ruoyi的项目。页面ui使用了layui,集成了阿里云oss(支持前端和后端上传)、七牛云,支持代码自动生成,支持数据库读写分离,减去了70%的工作量,...
当然,也正因为redis读写数据都使用内存,所以它的速度是非常快的,很适合我们来存放一些临时性的数据。 此外,redis能实现的作用很多,诸如队列、缓存之类的,但我也还没使用过,无法在这里为大家说明,但不影响...