- 浏览: 237963 次
- 性别:
- 来自: 北京
文章分类
最新评论
-
月度银墙:
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
相关推荐
这个工具类可能会使用`java.util.Properties`类和`java.io.FileInputStream`或`java.io.FileOutputStream`来读写文件。 3. **使用工具类读取.properties文件** 使用工具类读取`.properties`文件的步骤如下: 1. ...
在本案例中,我们关注的是`PropertyUtil.java`工具类,它提供了方便的方法来读取和写入这些Properties文件,简化了开发人员的工作流程。 `PropertyUtil.java`的核心功能可能包括以下几点: 1. **读取Properties...
- **Java**:Apache POI库可以帮助读写Excel文件,Java的内置`Properties`类可以处理Properties文件。 - **Python**:`openpyxl`库处理Excel文件,`configparser`模块处理Properties文件。 - **Python pandas**:...
在这个名为"哈哈(ExtUtil0.2)"的项目中,作者提供了一些自定义的工具类,专门用于简化这些常见的文件和文件夹操作,同时包含了对TXT文件的读写功能。下面我们将详细探讨这些知识点。 首先,工具类(Tool Class)...
总结来说,`YmlUtil.java`和`PropertiesUtil.java`是Java开发中的实用工具类,它们简化了YAML和Properties配置文件的读取和修改过程,提高了代码的可维护性和灵活性。理解和使用这些工具类,对于提升Java项目管理...
总结来说,Java中的Properties类是管理配置文件的关键工具,它提供了一套完整的API来读取、写入和操作键值对。掌握这部分知识对于任何Java开发者来说都是至关重要的,因为配置文件在软件开发中扮演着不可或缺的角色...
在Java编程中,读写`.properties`文件是一个常见的任务,这些文件通常用于存储配置信息、设置或环境变量。本文将深入探讨如何在Java中高效地处理`.properties`文件,包括读取、写入以及更新其内容。我们将参考提供的...
在这个场景中,我们关注的是“java文件读写”,特别是读取`properties`配置文件和处理目录及文件的操作。下面我们将详细探讨这两个主题。 首先,`properties`配置文件是Java应用中常用的一种存储配置信息的方式。...
在Java编程中,操作配置文件,尤其是`.properties`文件,是一项常见的任务。`.properties`文件主要用于存储应用程序的配置信息,通常包含键值对,其中键是唯一的标识符,值是与该键相关联的数据。Java提供了`java....
综上所述,Java中的`Properties`类为处理配置文件提供了强大而方便的工具,无论是简单的键值对存储还是复杂的项目配置,都能轻松应对。在实际开发中,合理使用Properties文件能提高代码的可维护性和灵活性。
总结,属性文件读写操作类的核心在于`java.util.Properties`类的使用,以及如何优雅地进行文件I/O操作。理解这些知识点对于开发Java应用程序,特别是需要持久化配置信息的应用来说至关重要。通过自定义类和工具方法...
在Python编程中,有时我们需要处理Java开发中常用的`.properties`配置文件。虽然Python标准库并未直接提供处理此类文件的模块,但我们可以自定义一个类来实现这个功能。本篇文章将详细探讨如何通过Python来读取并...
在实际开发中,通常会将properties文件的读写操作封装到单独的类或方法中,以保持代码的整洁和模块化。此外,为了提高用户体验,可以使用异步处理,避免因文件操作导致的UI冻结。在处理异常时,确保提供有意义的错误...
在Java中,我们可以使用`java.util.Properties`类来加载和操作这类文件。以下是读取`properties`文件的基本步骤: 1. 加载`properties`文件: - 创建`Properties`对象实例:`Properties prop = new Properties();`...
总结,Java中的`Properties`类是读取和管理`.properties`文件的关键工具。通过使用它,开发者可以方便地管理和使用配置信息,同时还可以利用Spring框架提供的`@ConfigurationProperties`实现更高级的绑定功能。正确...
- 为了代码的可维护性和可重用性,可以创建一个工具类,封装Properties的读写操作。这样在项目中只需调用相应的静态方法即可。 ```java public class PropertiesUtil { public static String getProperty(String...
本项目是一款基于Java和HTML实现的轻量级、高效Excel读写工具设计源码,总文件量为278个,其中包括225个Java源文件、24个xlsx文件、9个txt文件、6个png文件、3个jpg文件、3个xml文件、2个properties文件、1个...
在Java编程语言中,工具类(Utility Class)是包含各种静态方法的类,这些方法用于执行特定任务,如数据处理、格式化、计算等。Java提供了丰富的内置工具类,但开发者也经常创建自定义工具类以满足项目需求。标题...
在Java中,工具类通常是静态方法的集合,用于处理常见的编程任务,如字符串操作、数学计算、日期时间处理等。这些工具类极大地提高了开发效率,降低了代码的复杂性。下面将详细介绍标题和描述中提到的30个Java工具类...
本篇将详细讲解基于给定的`ReadAndPrintXMLFile.java`、`MyProperties.java`和`book.xml`文件的Java文件读写知识。 首先,`MyProperties.java`可能是一个用于处理`.properties`文件的类。在Java中,`java.util....