`

Java的多种方式读写Properties文件

阅读更多

我们从Properties文件中读取文件,其中文件可能在指定的目录中如D:/PROGRAM BACK/DEVELOPMENT TOOLS/Program files/eclipseEE3.4.1/workspace/WebTest1.0/src/com/shopping/eus/property/sys.properties:,

也可能是在我们定义的某一个包中如:com.shopping.eus.property.sys

注意包名为:com.shopping.eus.property下面有个sys.properties文件;

 

总体来说要理解的是:Properties是Hashtable的一个子类,所以他不但有自己的方法可用也可使用Hashtable的方法,

本身的setProperty(String key,String value)与Hashtable的put(Object key,Object value)都可用。又如getProperty与get方法。

 

另外:要从Properties文件中读出某一个值,必须先加载或将整个文件中的键和值都读入Properties对象中或者直接说是Hashtable中。所以从文件中读取可以采用load方法,而对于我们更方便的一种方式是从我们开发的某一个包中读取则可用到PropertyResourceBundle方法的getBundle,并读出所有键和值再set进去便可了。

具体看一下源代码吧。:

 

package com.shopping.eus.util;

import java.util.Properties;

public class SysProp {

	private static Properties sysProperty = null;

	public static String getProperty(String key) {

		return getProperty(key, "");
	}

	public static String getProperty(String key, String defaultValue) {

		if (sysProperty == null) {
			sysProperty = PropertyUtil
					.getPropObjFromBundle("com.shopping.eus.property.sys");
		}
		if (sysProperty == null) {
			sysProperty = PropertyUtil
					.getPropObjFromFile("D:/PROGRAMBACK/DEVELOPMENTTOOLS/ProgramFiles/eclipseEE3.4.1/workspace/WebTest1.0/src/com/shopping/eus/property/sys.properties");
		}
		return sysProperty.getProperty(key, defaultValue);
	}

	public static void main(String[] args) {
		SysProp.getProperty("userName");
		System.out.println(SysProp.getProperty("userName"));
	}

}

 

 

 

package com.shopping.eus.util;

import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.InputStream;
import java.util.Enumeration;
import java.util.Properties;
import java.util.PropertyResourceBundle;

public class PropertyUtil {

	public static Properties getPropObjFromBundle(String bundleName) {

		Properties objProp = new Properties();

		PropertyResourceBundle bundle = (PropertyResourceBundle) PropertyResourceBundle
				.getBundle(bundleName);
		Enumeration enm = bundle.getKeys();
		while (enm.hasMoreElements()) {
			String key = (String) enm.nextElement();
			String value = bundle.getString(key);
			objProp.setProperty(key, value);

		}
		return objProp;
	}

	public static Properties getPropObjFromFile(String filePath) {
		Properties objProp = new Properties();

		File file = new File(filePath);
		InputStream inStream;
		try {
			inStream = new FileInputStream(file);
			objProp.load(inStream);
		} catch (FileNotFoundException e) {
			e.printStackTrace();
		} catch (IOException e) {
			e.printStackTrace();
		}

		return objProp;
	}

}

 基本上这两种方法可以满足我们从Properties读取了,理解起来也不难。当然具体使用时是要改进一下的。

分享到:
评论

相关推荐

    JAVA 范例大全 光盘 资源

    实例70 读写Properties文件 170 实例71 配置Properties带附件发送邮件 175 实例72 资源国际化(Properties) 179 常见问题 读取Properties文件出现中文乱码 182 第9章 Java异常处理与反射机制 183 实例73 运用...

    Android集成主流优秀第三方组件框架

    Properties操作工具类(ToolProperties.java),读写Properties文件操作 网络操作工具类(ToolNetwork.java),获取网络信息、更改切换网络等相关操作 日期操作工具类(ToolDateTime.java),获取日期、日期加减、格式...

    集成目前Android主流优秀第三方组件

    Properties操作工具类(ToolProperties.java),读写Properties文件操作 网络操作工具类(ToolNetwork.java),获取网络信息、更改切换网络等相关操作 日期操作工具类(ToolDateTime.java),获取日期、日期加减、格式...

    Android例子源码集成安卓主流优秀第三方组件框架.zip

    Properties操作工具类(ToolProperties.java),读写Properties文件操作 网络操作工具类(ToolNetwork.java),获取网络信息、更改切换网络等相关操作 日期操作工具类(ToolDateTime.java),获取日期、日期加减、...

    集成安卓主流优秀第三方组件框架.zip

    Properties操作工具类(ToolProperties.java),读写Properties文件操作 网络操作工具类(ToolNetwork.java),获取网络信息、更改切换网络等相关操作 日期操作工具类(ToolDateTime.java),获取日期、日期加减、...

    面向对象技术与UML课件及源代码-by 南邮-陈杨

    11.5.1用RandomAccessFile类进行文件读写 11.5.2使用Properties类 11.6小结 第12章多线程开发 12.1认识多线程 12.1.1为什么需要多线程 12.1.2继承Thread类开发多线程 12.1.3实现Runnable接口开发多线程 ...

    iBATIS实战

    9.6.2 高速缓存可读写数据 169 9.6.3 高速缓存旧的静态数据 170 9.7 小结 172 第10章 iBATIS数据访问对象 173 10.1 隐藏实现细节 173 10.1.1 为何要分离 174 10.1.2 一个简单示例 175 10.2 配置DAO 177 10.2.1 ...

    JMeter操作手册大全.docx

    jmeter.properties:Jmeter配置文件 jmeter-server.bat:windows下启动负载生成器服务文件 jmeter-server:Linux下启动负载生成器文件 /docs目录——Jmeter帮助文档 /extras目录——提供了对Ant的支持文件,可也用于...

    单点登录源码

    - 一站式支付解决方案,统一下单接口,支持支付宝、微信、网银等多种支付方式。不涉及业务的纯粹的支付平台。 - 统一下单(统一下单接口、统一扫码)、订单管理、数据分析、财务报表、商户管理、渠道管理、对账系统...

    Nginx安装包

    作为这次的主角,相信大家对redis应该都一定印象,redis是一款开源的高性能key-value数据库,拥有丰富的键值储存类型,并提供多种语言的API。 与一般数据库不同,redis是使用内存作为主存,而使用硬盘来实现数据持久...

Global site tag (gtag.js) - Google Analytics