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 閱讀(286) 評論(0)  編輯  收藏 所屬分類: J2SE
          主站蜘蛛池模板: 彰化市| 兴化市| 故城县| 偃师市| 临澧县| 丘北县| 东阿县| 融水| 临沭县| 洛浦县| 连南| 磴口县| 开封市| 临朐县| 清镇市| 贵州省| 镇康县| 昌都县| 丰宁| 合水县| 密云县| 永和县| 托克逊县| 苍南县| 丰宁| 德庆县| 三河市| 奉节县| 奉化市| 河东区| 佛山市| 昔阳县| 大埔县| 墨江| 上饶县| 郴州市| 白朗县| 搜索| 广平县| 贞丰县| 台北市|