Java讀取Properties文件的六種方法

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

完整的示例,能夠參考附件文件
           如何上傳文件,誰知道請告訴如下。 只好把source都貼上來了
JProperties.java文件

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;



            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


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


mysql

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

            }



            }

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:sql

------------------------------------------------------------------------------------------------------------------------------------------------------------------cookie

Java對properties配置文件的操做session

package com.yorsun;
import java.io.File;
            import java.io.FileInputStream;
            import java.io.FileNotFoundException;
            import java.io.FileOutputStream;
            import java.io.IOException;
            import java.util.Properties;
import javax.servlet.ServletContext;
            import javax.servlet.http.HttpServlet;

            public class PropertiesUnit {
            private String filename;
private Properties p;
private FileInputStream in;
private FileOutputStream out;
public PropertiesUnit(String filename) {
               this.filename = filename
;

               File file = new File(filename);

               try {

                in = new FileInputStream(file);

                p = new Properties();

                p.load(in);

                in.close();

               } catch (FileNotFoundException e) {

                // TODO Auto-generated catch block

                System.err.println("配置文件config.properties找不到!");

e.printStackTrace();

               } catch (IOException e) {

                // TODO Auto-generated catch block
System.err.println("讀取配置文件config.properties錯誤!");
e.printStackTrace();
               }
            }
public static String getConfigFile(HttpServlet hs) {
               return getConfigFile(hs, "config.properties");
            }

            private static String getConfigFile(HttpServlet hs, String configFileName) {
               String configFile = "";
               ServletContext sc = hs.getServletContext();
               configFile = sc.getRealPath("/" + configFileName);
               if (configFile == null || configFile.equals("")) {
                configFile = "/" + configFileName;
               }
               // TODO Auto-generated method stub
               return configFile;
            }
public void list() {
               p.list(System.out);
            }
public String getValue(String itemName) {
               return p.getProperty(itemName);
            }
public String getValue(String itemName, String defaultValue) {
               return p.getProperty(itemName, defaultValue);
            }
public void setValue(String itemName, String value) {
               p.setProperty(itemName, value);
            }
public void saveFile(String filename, String description) throws Exception {
               try {
                File f = new File(filename);
                out = new FileOutputStream(f);
                p.store(out, description);
                out.close();
               } catch (IOException ex) {
                throw new Exception("沒法保存指定的配置文件:" + filename);
               }
            }

            public void saveFile(String filename) throws Exception{
               saveFile(filename,"");
            }

            public void saveFile() throws Exception{
               if(filename.length()==0)
                throw new Exception("需指定保存的配置文件名");
saveFile(filename);
            }

            public void deleteValue(String value){
               p.remove(value);
            }

            public static void main(String args[]){
               String file="/eclipse/workspace/NewsTest/WEB-INF/config.properties";
            //   String file="D:\\eclipse\\workspace\\NewsTest\\WEB-INF\\config.properties";
               PropertiesUnit pu=new PropertiesUnit(file);
               pu.list();
            }
}

--------------------------------------------------------------------------------------------------------------------------------------------------------------------eclipse

package com.test.TestClass;
import java.io.BufferedInputStream;
            import java.io.File;
            import java.io.FileInputStream;
            import java.io.FileNotFoundException;
            import java.io.IOException;
            import java.io.InputStream;
            import java.util.Properties;
public class ReadPropertiesFile ...{
public void readPropertiesFile(String fileName) throws FileNotFoundException ...{
                    String str = "";
                    Properties prop = new Properties();

                    InputStream stream = null;

                    //讀取這個類在同一包中的properties文件
//stream = getClass().getClassLoader().getResourceAsStream(fileName);
                    System.out.println("path:" + getClass().getResource(fileName));


                    //讀取SRC下的的properties文件
String path = getClass().getResource("/").getPath();
                    stream = new BufferedInputStream(new FileInputStream(new File(path+fileName)));
try ...{
                        prop.load(stream);
                        str = prop.getProperty("localname");
                        System.out.println("localname:" + str);
                        System.out.println("properties:" + prop);
                        stream.close();
} catch (IOException e) ...{
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }
                }

                public static void main(String[] args) throws FileNotFoundException ...{
                    // TODO Auto-generated method stub
                    new ReadPropertiesFile().readPropertiesFile("config.properties");
}
}

--------------------------------------------------------------------------------------------------------------------------------------函數

//=================sprin配置文件================================
           <bean
              id="userService"
              class="com.thtf.ezone.ezesb.jmx.admin.service.impl.UserServiceImpl">
              <property
               name="filePath"
               value="config/userInfo.properties" />
           </bean>

           //=================java文件================================this

package com.thtf.ezone.ezesb.jmx.admin.service.impl;
import java.io.FileInputStream;
            import java.io.IOException;
            import java.util.Properties;
public class UserServiceImpl implements UserService {

            String filePath = null;
public void setFilePath(String filePath) {
               this.filePath = filePath;
            }
public static void main(String dd[])throws Exception{

            Properties p = new Properties();
            FileInputStream ferr=new FileInputStream((getClass().getClassLoader()
                  .getResource("") + filePath).toString().substring(6));// 用subString(6)去掉:file:/try{
            p.load(ferr);
            ferr.close();
            Set s = p.keySet();
            Iterator it = s.iterator();
            while(it.hasNext()){
            String id = (String)it.next();
            String value = p.getProperty(id);
            System.out.println(id+":="+value);
            }
            }catch(Exception e){
            e.printStackTrace();
            }
            }
            }

//==============databaseconfing.properties 文件=====================spa

#----------------------------------
# sql server 2000數據厙鏈接信息
#----------------------------------
dp.sd.DataBaseTyp=mssql
           DataBaseHost=127.0.0.1:1433
           DataBase=formpro
           UserName=sa
           PassWord=01
           #----------------------------------
# mysql 數據厙鏈接信息
#----------------------------------
#DataBaseHost=127.0.0.1:3306
           #DataBaseTyp=mysql
           #DataBase=snow
           #UserName=root
           #PassWord=01
           //==========================運行結果=======================code

PassWord:=01            DataBaseHost:=127.0.0.1:1433            DataBase:=formpro            dp.sd.DataBaseTyp:=mssql            UserName:=sa

相關文章
相關標籤/搜索