赛迪网 > IT技术 Java > 技术动态
  IT资讯搜索
 
IT产品搜索
[程序开发][网管世界][网络安全][数据库技术]
[操作系统][嘉宾聊天·在线访谈][活动集锦]
[精彩专题][Symantec专区][订阅IT技术周刊]
[开发论坛][网管论坛][安全论坛][数据库论坛]
[操作系统论坛][Sybase专区][IBM dW技术专区]
[病毒求助][病毒与漏洞播报][文档·源码下载]

用J2SE API读取Properties文件六种方法

发布时间:2008.03.05 04:45     来源:赛迪网    作者:loveofgod

1。使用java.util.Properties类的load()方法 
示例: 
InputStream in = lnew BufferedInputStream(new FileInputStream(name)); 
Properties p = new Properties(); 
p.load(in); 

2。使用java.util.ResourceBundle类的getBundle()方法 
示例:
ResourceBundle rb = ResourceBundle.getBundle(name, Locale.getDefault()); 

3。使用java.util.PropertyResourceBundle类的构造函数 
示例: 
InputStream in = new BufferedInputStream(new FileInputStream(name)); 
ResourceBundle rb = new PropertyResourceBundle(in); 

4。使用class变量的getResourceAsStream()方法 
示例: 
InputStream in = JProperties.class.getResourceAsStream(name); 
Properties p = new Properties(); 
p.load(in); 

5。使用class.getClassLoader()所得到的java.lang.ClassLoader的getResourceAsStream()方法 
示例: 
InputStream in = JProperties.class.getClassLoader().getResourceAsStream(name); 
Properties p = new Properties(); 
p.load(in); 

6。使用java.lang.ClassLoader类的getSystemResourceAsStream()静态方法 
示例: 
InputStream in = ClassLoader.getSystemResourceAsStream(name); 
Properties p = new Properties(); 
p.load(in); 

补充 

Servlet中可以使用javax.servlet.ServletContext的getResourceAsStream()方法 
示例:
InputStream in = context.getResourceAsStream(path); 
Properties p = new Properties(); 
p.load(in); 

完整的示例,可以参考附件文件 
如何上传文件,谁知道请告诉以下。 只好把source都贴上来了 
JProperties.java文件 

/** 
** This program is free software. 
** 
** You may redistribute it and/or modify it under the terms of the GNU 
** General Public License as published by the Free Software Foundation. 
** Version 2 of the license should be included with this distribution in 
** the file LICENSE, as well as License.html. If the license is not 
** included with this distribution, you may find a copy at the FSF web 
** site at 'www.gnu.org' or 'www.fsf.org', or you may write to the 
** Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139 USA. 
** 
** THIS SOFTWARE IS PROVIDED AS-IS WITHOUT WARRANTY OF ANY KIND, 
** NOT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY. THE AUTHOR 
** OF THIS SOFTWARE, ASSUMES _NO_ RESPONSIBILITY FOR ANY 
** CONSEQUENCE RESULTING FROM THE USE, MODIFICATION, OR 
** REDISTRIBUTION OF THIS SOFTWARE. 
**/ 

package com.kindani; 

//import javax.servlet.ServletContext; 
import java.util.*; 
import java.io.InputStream; 
import java.io.IOException; 
import java.io.BufferedInputStream; 
import java.io.FileInputStream; 

/** 
* 使用J2SE API?取Properties文件的六?方法 
* User: SYNFORM 
* Date: 2005/07/12 
* Time: 18:40:55 
* To change this template use File | Settings | File Templates. 
*/ 
public class JProperties { 

public final static int BY_PROPERTIES = 1; 
public final static int BY_RESOURCEBUNDLE = 2; 
public final static int BY_PROPERTYRESOURCEBUNDLE = 3; 
public final static int BY_CLASS = 4; 
public final static int BY_CLASSLOADER = 5; 
public final static int BY_SYSTEM_CLASSLOADER = 6; 

public final static Properties loadProperties(final String name, final int type) throws IOException { 
Properties p = new Properties(); 
InputStream in = null; 
if (type == BY_PROPERTIES) { 
in = new BufferedInputStream(new FileInputStream(name)); 
assert (in != null); 
p.load(in); 
} else if (type == BY_RESOURCEBUNDLE) { 
ResourceBundle rb = ResourceBundle.getBundle(name, Locale.getDefault()); 
assert (rb != null); 
p = new ResourceBundleAdapter(rb); 
} else if (type == BY_PROPERTYRESOURCEBUNDLE) { 
in = new BufferedInputStream(new FileInputStream(name)); 
assert (in != null); 
ResourceBundle rb = new PropertyResourceBundle(in); 
p = new ResourceBundleAdapter(rb); 
} else if (type == BY_CLASS) { 
assert (JProperties.class.equals(new JProperties().getClass())); 
in = JProperties.class.getResourceAsStream(name); 
assert (in != null); 
p.load(in); 
// return new JProperties().getClass().getResourceAsStream(name); 
} else if (type == BY_CLASSLOADER) { 
assert (JProperties.class.getClassLoader().equals(new JProperties().getClass().getClassLoader())); 
in = JProperties.class.getClassLoader().getResourceAsStream(name); 
assert (in != null); 
p.load(in); 
// return new JProperties().getClass().getClassLoader().getResourceAsStream(name); 
} else if (type == BY_SYSTEM_CLASSLOADER) { 
in = ClassLoader.getSystemResourceAsStream(name); 
assert (in != null); 
p.load(in); 


if (in != null) { 
in.close(); 

return p; 



// ---------------------------------------------- servlet used 
/* 
public static Properties loadProperties(ServletContext context, String path) throws IOException { 
assert (context != null); 
InputStream in = context.getResourceAsStream(path); 
assert (in != null); 
Properties p = new Properties(); 
p.load(in); 
in.close(); 
return p; 

*/ 
// ---------------------------------------------- support class 

/** 
* ResourceBundle Adapter class. 
*/ 
public static class ResourceBundleAdapter extends Properties { 
public ResourceBundleAdapter(ResourceBundle rb) { 
assert (rb instanceof java.util.PropertyResourceBundle); 
this.rb = rb; 
java.util.Enumeration e = rb.getKeys(); 
while (e.hasMoreElements()) { 
Object o = e.nextElement(); 
this.put(o, rb.getObject((String) o)); 



private ResourceBundle rb = null; 

public ResourceBundle getBundle(String baseName) { 
return ResourceBundle.getBundle(baseName); 


public ResourceBundle getBundle(String baseName, Locale locale) { 
return ResourceBundle.getBundle(baseName, locale); 


public ResourceBundle getBundle(String baseName, Locale locale, ClassLoader loader) { 
return ResourceBundle.getBundle(baseName, locale, loader); 


public Enumeration getKeys() { 
return rb.getKeys(); 


public Locale getLocale() { 
return rb.getLocale(); 


public Object getObject(String key) { 
return rb.getObject(key); 


public String getString(String key) { 
return rb.getString(key); 


public String[] getStringArray(String key) { 
return rb.getStringArray(key); 


protected Object handleGetObject(String key) { 
return ((PropertyResourceBundle) rb).handleGetObject(key); 







JPropertiesTest.java文件 

/** 
** This program is free software. 
** 
** You may redistribute it and/or modify it under the terms of the GNU 
** General Public License as published by the Free Software Foundation. 
** Version 2 of the license should be included with this distribution in 
** the file LICENSE, as well as License.html. If the license is not 
** included with this distribution, you may find a copy at the FSF web 
** site at 'www.gnu.org' or 'www.fsf.org', or you may write to the 
** Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139 USA. 
** 
** THIS SOFTWARE IS PROVIDED AS-IS WITHOUT WARRANTY OF ANY KIND, 
** NOT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY. THE AUTHOR 
** OF THIS SOFTWARE, ASSUMES _NO_ RESPONSIBILITY FOR ANY 
** CONSEQUENCE RESULTING FROM THE USE, MODIFICATION, OR 
** REDISTRIBUTION OF THIS SOFTWARE. 
**/ 
package com.kindani.test; 

import junit.framework.*; 
import com.kindani.JProperties; 

//import javax.servlet.ServletContext; 
import java.util.Properties; 

public class JPropertiesTest extends TestCase { 
JProperties jProperties; 
String key = "helloworld.title"; 
String value = "Hello World!"; 

public void testLoadProperties() throws Exception { 
String name = null; 
Properties p = new Properties(); 

name = "C:\\IDEAP\\Properties4Methods\\src\\com\\kindani\\test\\LocalStrings.properties"; 
p = JProperties.loadProperties(name, JProperties.BY_PROPERTIES); 
assertEquals(value, p.getProperty(key)); 

name = "com.kindani.test.LocalStrings"; 
p = JProperties.loadProperties(name,JProperties.BY_RESOURCEBUNDLE); 
assertEquals(value, p.getProperty(key)); 
assertEquals(value,((JProperties.ResourceBundleAdapter)p).getString(key)); 

name = "C:\\IDEAP\\Properties4Methods\\src\\com\\kindani\\test\\LocalStrings.properties"; 
p = JProperties.loadProperties(name, JProperties.BY_PROPERTYRESOURCEBUNDLE); 
assertEquals(value, p.getProperty(key)); 
assertEquals(value,((JProperties.ResourceBundleAdapter)p).getString(key)); 

name = "\\com\\kindani\\test\\LocalStrings.properties"; 
p = JProperties.loadProperties(name, JProperties.BY_SYSTEM_CLASSLOADER); 
assertEquals(value, p.getProperty(key)); 

name = "\\com\\kindani\\test\\LocalStrings.properties"; 
p = JProperties.loadProperties(name, JProperties.BY_CLASSLOADER); 
assertEquals(value, p.getProperty(key)); 

name = "test\\LocalStrings.properties"; 
p = JProperties.loadProperties(name, JProperties.BY_CLASS); 
assertEquals(value, p.getProperty(key)); 


/* 
public void testLoadProperties2() throws Exception { 
ServletContext context = null; 
String path = null; 
Properties p = null; 
path = "/WEB-INF/classes/LocalStrings.properties"; 
p = JProperties.loadProperties(context, path); 
assertEquals(value, p.getProperty(key)); 

*/ 


properties文件与JPropertiesTest.java文件相同的目录下 
LocalStrings.properties文件 
# $Id: LocalStrings.properties,v 1.1 2000/08/17 00:57:52 horwat Exp $ 

# Default localized resources for example servlets 
# This locale is en_US 

helloworld.title=Hello World! 

requestinfo.title=Request Information Example 
requestinfo.label.method=Method: 
requestinfo.label.requesturi=Request URI: 
requestinfo.label.protocol=Protocol: 
requestinfo.label.pathinfo=Path Info: 
requestinfo.label.remoteaddr=Remote Address: 

requestheader.title=Request Header Example 

requestparams.title=Request Parameters Example 
requestparams.params-in-req=Parameters in this request: 
requestparams.no-params=No Parameters, Please enter some 
requestparams.firstname=First Name: 
requestparams.lastname=Last Name: 

cookies.title=Cookies Example 
cookies.cookies=Your browser is sending the following cookies: 
cookies.no-cookies=Your browser isn't sending any cookies 
cookies.make-cookie=Create a cookie to send to your browser 
cookies.name=Name: 
cookies.value=Value: 
cookies.set=You just sent the following cookie to your browser: 

sessions.title=Sessions Example 
sessions.id=Session ID: 
sessions.created=Created: 
sessions.lastaccessed=Last Accessed: 
sessions.data=The following data is in your session: 
sessions.adddata=Add data to your session 
sessions.dataname=Name of Session Attribute: 
sessions.datavalue=Value of Session Attribute:
         (责任编辑:包春林)


[ 发表评论 ] 字体[  ] [ 打印 ] [ 进入博客 ] [ 进入论坛 ]  [ 推荐给朋友 ]
  相关文章
· Java入门--Java语言接口与继承的本质 (03-04) · JAVA进阶--如何提升JSP应用程序的效率 (03-04)
· 浅析Java语言中两种异常的差别 (03-04) · 精通语言不等于是一个好的软件开发人员 (03-04)
· Java 编程技术中汉字问题的分析及解决 (03-04) · 基础:J2ME程序开发之新手入门九大要点 (03-04)
· Java Web Start简单入门步骤 (03-04) · 入门:int 和 String 互相转换的多种方法 (03-03)
· J2EE综合:谈谈Java Web开发的学习路径 (03-03) · 高级:使用异步Servlet扩展AJAX应用程序 (03-03)
  客户需求反馈表
* 姓  名:
更多资料  了解方案  认识厂商
* 单位名称:
* 联系电话:
* 电子邮件:
  赛迪推荐  
  手机·资费 ·新品·导购·评测·手机资费·宽带
手机搜索  诺基亚 N73 MOTO Z6
  IT产品 ·笔记本·台式机·服务器·打印·投影
IT产品搜索 
  IT技术 ·开发·网管·安全·数据库·操作系统
  信息化 ·热点·专题·访谈·周刊·方案案例
· 工信部“三定”公布 总编制731名设24司局
· 北京发电子商务监管意见 营利性网店须办照
· 直播 08中国城市信息化高峰论坛 案例点评
· 烽火网络校园解决方案 移民安置信息管理系统
  IT博客 ·曾剑秋·项立刚·Java学习·网管
  IT技术论坛 ·开发·网管·安全·数据库·系统