posts - 66,comments - 41,trackbacks - 0
使用J2SE API读取Properties文件的六种方法

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); 


完整示例: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); 
= new ResourceBundleAdapter(rb); 
}
 else if (type == BY_PROPERTYRESOURCEBUNDLE) 
in 
= new BufferedInputStream(new FileInputStream(name)); 
assert (in != null); 
ResourceBundle rb 
= new PropertyResourceBundle(in); 
= 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"
= JProperties.loadProperties(name, JProperties.BY_PROPERTIES); 
assertEquals(value, p.getProperty(key)); 

name 
= "com.kindani.test.LocalStrings"
= 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"
= JProperties.loadProperties(name, JProperties.BY_PROPERTYRESOURCEBUNDLE); 
assertEquals(value, p.getProperty(key)); 
assertEquals(value,((JProperties.ResourceBundleAdapter)p).getString(key)); 

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

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

name 
= "test\\LocalStrings.properties"
= 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:


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

只有注册用户登录后才能发表评论。


网站导航: