java 加载文件的几种方式


  
  

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

  7.使用java.lang.ClassLoader类的getResource(String name)静态方法,返回URL

  补充

  Servlet中可以使用javax.servlet.ServletContext的getResourceAsStream()方法

 

示例:InputStream in = context.getResourceAsStream(path);   Properties p = new Properties();   p.load(in);

    完整的示例:

 

JProperties.Java文件   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文件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:IDEAPProperties4Methodssrccom   kindanitestLocalStrings.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:IDEAPProperties4Methodssrccom   kindanitestLocalStrings.properties";   p = JProperties.loadProperties(name, JProperties.BY_PROPERTYRESOURCEBUNDLE);   assertEquals(value, p.getProperty(key));   assertEquals(value,((JProperties.ResourceBundleAdapter)p).getString(key));   name = "comkindanitestLocalStrings.properties";   p = JProperties.loadProperties(name, JProperties.BY_SYSTEM_CLASSLOADER);   assertEquals(value, p.getProperty(key));   name = "comkindanitestLocalStrings.properties";   p = JProperties.loadProperties(name, JProperties.BY_CLASSLOADER);   assertEquals(value, p.getProperty(key));   name = "testLocalStrings.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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值