使用J2SE API读取Properties文件的六种方法 
1。使用java.util.Properties类的load()方法 
示例: 
 InputStream in = lnew BufferedInputStream(new FileInputStream(name));
InputStream in = lnew BufferedInputStream(new FileInputStream(name)); 
 Properties p = new Properties();
Properties p = new Properties(); 
 p.load(in);
p.load(in); 

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

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

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

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

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

 补充 
Servlet中可以使用javax.servlet.ServletContext的getResourceAsStream()方法 
示例:
 InputStream in = context.getResourceAsStream(path);
InputStream in = context.getResourceAsStream(path); 
 Properties p = new Properties();
Properties p = new Properties(); 
 p.load(in);
p.load(in); 
完整示例:JProperties.java文件

 /** *//**
/** *//** 
 ** This program is free software.
** This program is free software. 
 **
** 
 ** You may redistribute it and/or modify it under the terms of the GNU
** You may redistribute it and/or modify it under the terms of the GNU 
 ** General Public License as published by the Free Software Foundation.
** General Public License as published by the Free Software Foundation. 
 ** Version 2 of the license should be included with this distribution in
** 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
** 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
** 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
** 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.
** Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139 USA. 
 **
** 
 ** THIS SOFTWARE IS PROVIDED AS-IS WITHOUT WARRANTY OF ANY KIND,
** THIS SOFTWARE IS PROVIDED AS-IS WITHOUT WARRANTY OF ANY KIND, 
 ** NOT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY. THE AUTHOR
** NOT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY. THE AUTHOR 
 ** OF THIS SOFTWARE, ASSUMES _NO_ RESPONSIBILITY FOR ANY
** OF THIS SOFTWARE, ASSUMES _NO_ RESPONSIBILITY FOR ANY 
 ** CONSEQUENCE RESULTING FROM THE USE, MODIFICATION, OR
** CONSEQUENCE RESULTING FROM THE USE, MODIFICATION, OR 
 ** REDISTRIBUTION OF THIS SOFTWARE.
** REDISTRIBUTION OF THIS SOFTWARE. 
 **/
**/ 

 package com.kindani;
package com.kindani; 

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


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

 public class JProperties
public class JProperties  {
{ 

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


 public final static Properties loadProperties(final String name, final int type) throws IOException
public final static Properties loadProperties(final String name, final int type) throws IOException  {
{ 
 Properties p = new Properties();
Properties p = new Properties(); 
 InputStream in = null;
InputStream in = null; 

 if (type == BY_PROPERTIES)
if (type == BY_PROPERTIES)  {
{ 
 in = new BufferedInputStream(new FileInputStream(name));
in = new BufferedInputStream(new FileInputStream(name)); 
 assert (in != null);
assert (in != null); 
 p.load(in);
p.load(in); 

 } else if (type == BY_RESOURCEBUNDLE)
} else if (type == BY_RESOURCEBUNDLE)  {
{ 
 ResourceBundle rb = ResourceBundle.getBundle(name, Locale.getDefault());
ResourceBundle rb = ResourceBundle.getBundle(name, Locale.getDefault()); 
 assert (rb != null);
assert (rb != null); 
 p = new ResourceBundleAdapter(rb);
p = new ResourceBundleAdapter(rb); 

 } else if (type == BY_PROPERTYRESOURCEBUNDLE)
} else if (type == BY_PROPERTYRESOURCEBUNDLE)  {
{ 
 in = new BufferedInputStream(new FileInputStream(name));
in = new BufferedInputStream(new FileInputStream(name)); 
 assert (in != null);
assert (in != null); 
 ResourceBundle rb = new PropertyResourceBundle(in);
ResourceBundle rb = new PropertyResourceBundle(in); 
 p = new ResourceBundleAdapter(rb);
p = new ResourceBundleAdapter(rb); 

 } else if (type == BY_CLASS)
} else if (type == BY_CLASS)  {
{ 
 assert (JProperties.class.equals(new JProperties().getClass()));
assert (JProperties.class.equals(new JProperties().getClass())); 
 in = JProperties.class.getResourceAsStream(name);
in = JProperties.class.getResourceAsStream(name); 
 assert (in != null);
assert (in != null); 
 p.load(in);
p.load(in); 
 // return new JProperties().getClass().getResourceAsStream(name);
// return new JProperties().getClass().getResourceAsStream(name); 

 } else if (type == BY_CLASSLOADER)
} else if (type == BY_CLASSLOADER)  {
{ 
 assert (JProperties.class.getClassLoader().equals(new JProperties().getClass().getClassLoader()));
assert (JProperties.class.getClassLoader().equals(new JProperties().getClass().getClassLoader())); 
 in = JProperties.class.getClassLoader().getResourceAsStream(name);
in = JProperties.class.getClassLoader().getResourceAsStream(name); 
 assert (in != null);
assert (in != null); 
 p.load(in);
p.load(in); 
 // return new JProperties().getClass().getClassLoader().getResourceAsStream(name);
// return new JProperties().getClass().getClassLoader().getResourceAsStream(name); 

 } else if (type == BY_SYSTEM_CLASSLOADER)
} else if (type == BY_SYSTEM_CLASSLOADER)  {
{ 
 in = ClassLoader.getSystemResourceAsStream(name);
in = ClassLoader.getSystemResourceAsStream(name); 
 assert (in != null);
assert (in != null); 
 p.load(in);
p.load(in); 
 }
} 


 if (in != null)
if (in != null)  {
{ 
 in.close();
in.close(); 
 }
} 
 return p;
return p; 

 }
} 

 // ---------------------------------------------- servlet used
// ---------------------------------------------- servlet used 

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


 /** *//**
/** *//** 
 * ResourceBundle Adapter class.
* ResourceBundle Adapter class. 
 */
*/ 

 public static class ResourceBundleAdapter extends Properties
public static class ResourceBundleAdapter extends Properties  {
{ 

 public ResourceBundleAdapter(ResourceBundle rb)
public ResourceBundleAdapter(ResourceBundle rb)  {
{ 
 assert (rb instanceof java.util.PropertyResourceBundle);
assert (rb instanceof java.util.PropertyResourceBundle); 
 this.rb = rb;
this.rb = rb; 
 java.util.Enumeration e = rb.getKeys();
java.util.Enumeration e = rb.getKeys(); 

 while (e.hasMoreElements())
while (e.hasMoreElements())  {
{ 
 Object o = e.nextElement();
Object o = e.nextElement(); 
 this.put(o, rb.getObject((String) o));
this.put(o, rb.getObject((String) o)); 
 }
} 
 }
} 

 private ResourceBundle rb = null;
private ResourceBundle rb = null; 


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


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


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


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


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


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


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


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


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

 }
} 

 }
} 


 JPropertiesTest.java文件
JPropertiesTest.java文件 


 /** *//**
/** *//** 
 ** This program is free software.
** This program is free software. 
 **
** 
 ** You may redistribute it and/or modify it under the terms of the GNU
** You may redistribute it and/or modify it under the terms of the GNU 
 ** General Public License as published by the Free Software Foundation.
** General Public License as published by the Free Software Foundation. 
 ** Version 2 of the license should be included with this distribution in
** 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
** 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
** 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
** 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.
** Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139 USA. 
 **
** 
 ** THIS SOFTWARE IS PROVIDED AS-IS WITHOUT WARRANTY OF ANY KIND,
** THIS SOFTWARE IS PROVIDED AS-IS WITHOUT WARRANTY OF ANY KIND, 
 ** NOT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY. THE AUTHOR
** NOT EVEN THE IMPLIED WARRANTY OF MERCHANTABILITY. THE AUTHOR 
 ** OF THIS SOFTWARE, ASSUMES _NO_ RESPONSIBILITY FOR ANY
** OF THIS SOFTWARE, ASSUMES _NO_ RESPONSIBILITY FOR ANY 
 ** CONSEQUENCE RESULTING FROM THE USE, MODIFICATION, OR
** CONSEQUENCE RESULTING FROM THE USE, MODIFICATION, OR 
 ** REDISTRIBUTION OF THIS SOFTWARE.
** REDISTRIBUTION OF THIS SOFTWARE. 
 **/
**/ 
 package com.kindani.test;
package com.kindani.test; 

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

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


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


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

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

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

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

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

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

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


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

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

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

 helloworld.title=Hello World!
helloworld.title=Hello World! 

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

 requestheader.title=Request Header Example
requestheader.title=Request Header Example 

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

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

 sessions.title=Sessions Example
sessions.title=Sessions Example 
 sessions.id=Session ID:
sessions.id=Session ID: 
 sessions.created=Created:
sessions.created=Created: 
 sessions.lastaccessed=Last Accessed:
sessions.lastaccessed=Last Accessed: 
 sessions.data=The following data is in your session:
sessions.data=The following data is in your session: 
 sessions.adddata=Add data to your session
sessions.adddata=Add data to your session 
 sessions.dataname=Name of Session Attribute:
sessions.dataname=Name of Session Attribute: 
 sessions.datavalue=Value of Session Attribute:
sessions.datavalue=Value of Session Attribute:

 
	posted on 2007-12-23 23:09 
kylixlu 阅读(290) 
评论(0)  编辑  收藏  所属分类: 
J2SE