java读写 properties

来源:互联网 发布:网络舆情报告 编辑:程序博客网 时间:2024/05/20 09:24

转自:http://han2000lei.iteye.com/blog/377899


package com.web.connection;import java.io.IOException;import java.io.InputStream;import java.sql.Connection;import java.sql.DriverManager;import java.sql.SQLException;import java.util.Properties;import java.util.logging.Level;import java.util.logging.Logger;public class Conn {    private String fileName="/db.properties";//这里是指放在classes下,如果有包的话,前面加包名即可。例:/com/web/db.properties    private String driver = "";    private String url = "";    private String username ="";    private String password = "";    Connection conn=null;        public  Connection  getConn(){        Properties p = new Properties();try {InputStream in = Conn.class.getResourceAsStream(fileName);//这里有人用new FileInputStream(fileName),不过这种方式找不到配置文件。有人说是在classes下,我调过了,不行。    p.load(in);    in.close();    if(p.containsKey("driver")){        this.driver = p.getProperty("driver");    }    if(p.containsKey("url")){        this.url = p.getProperty("url");    }    if(p.containsKey("user")){        this.username = p.getProperty("user");    }    if(p.containsKey("password")){        this.password = p.getProperty("password");    }} catch (IOException ex) {    Logger.getLogger(Conn.class.getName()).log(Level.SEVERE, null, ex);}        System.out.println(p.getProperty("driver"));       try {            Class.forName(this.driver);            conn = DriverManager.getConnection(this.url,this.username,this.password);        } catch (SQLException ex) {            ex.printStackTrace();            System.out.print("获取连接异常");        } catch (ClassNotFoundException ex) {            System.out.print("加载驱动出错");            ex.printStackTrace();;        }        return conn;    }}

网上文章常见的几种读取.properties文件的方式
1、使用java.util.Properties类的load()方法 示例:
Java代码  收藏代码
  1. InputStream in = lnew BufferedInputStream(new FileInputStream(name));   
  2. Properties p = new Properties();   
  3. p.load(in);  


2、使用java.util.ResourceBundle类的getBundle()方法 
示例:
Java代码  收藏代码
  1. ResourceBundle rb = ResourceBundle.getBundle(name, Locale.getDefault());   


用ResourceBundle读取.properties文件可避免路径问题 
            我在jar里读取.properties文件时,总是找不到文件路径,后来用ResourceBundle读取.properties文件即可避免路径问题,代码如下: 
     

//process为文件名,切记不要加 .properties, URL是文件里的键名 
Java代码  收藏代码
  1.     ResourceBundle bundle = ResourceBundle.getBundle("com.ihandy.smsoc.app.process");  
  2.    String s = bundle.getString("URL");  
  3. System.out.println(s);  
  4. pURL = s;  



3、使用java.util.PropertyResourceBundle类的构造函数 
示例: 
Java代码  收藏代码
  1. InputStream in = new BufferedInputStream(new FileInputStream(name));   
  2. ResourceBundle rb = new PropertyResourceBundle(in);   


4、使用class变量的getResourceAsStream()方法 
示例:
 
Java代码  收藏代码
  1. InputStream in = 类名.class.getResourceAsStream(name);   
  2. Properties p = new Properties();   
  3. p.load(in);   

5、使用class.getClassLoader()所得到的java.lang.ClassLoader的getResourceAsStream()方法 示例: 
Java代码  收藏代码
  1. InputStream in = 类名.class.getClassLoader().getResourceAsStream(name);   
  2. Properties p = new Properties();   
  3. p.load(in);   


6、使用java.lang.ClassLoader类的getSystemResourceAsStream()静态方法 示例: 
Java代码  收藏代码
  1. InputStream in = ClassLoader.getSystemResourceAsStream(name);   
  2. Properties p = new Properties();   
  3. p.load(in);   


7、Servlet中可以使用javax.servlet.ServletContext的getResourceAsStream()方法 示例: 
Java代码  收藏代码
  1. InputStream in = context.getResourceAsStream(path);   
  2. Properties p = new Properties();   
  3. p.load(in);   


下面的转自:http://www.cnblogs.com/panjun-Donet/archive/2009/07/17/1525597.html

import java.io.BufferedInputStream;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.IOException;import java.io.InputStream;import java.io.OutputStream;import java.util.Enumeration;import java.util.Properties;public class TestMain {  //根据key读取value public static String readValue(String filePath,String key) {  Properties props = new Properties();        try {         InputStream in = new BufferedInputStream (new FileInputStream(filePath));         props.load(in);         String value = props.getProperty (key);            System.out.println(key+value);            return value;        } catch (Exception e) {         e.printStackTrace();         return null;        } }  //读取properties的全部信息    public static void readProperties(String filePath) {     Properties props = new Properties();        try {         InputStream in = new BufferedInputStream (new FileInputStream(filePath));         props.load(in);            Enumeration en = props.propertyNames();             while (en.hasMoreElements()) {              String key = (String) en.nextElement();                    String Property = props.getProperty (key);                    System.out.println(key+Property);                }        } catch (Exception e) {         e.printStackTrace();        }    }    //写入properties信息    public static void writeProperties(String filePath,String parameterName,String parameterValue) {     Properties prop = new Properties();     try {      InputStream fis = new FileInputStream(filePath);            //从输入流中读取属性列表(键和元素对)            prop.load(fis);            //调用 Hashtable 的方法 put。使用 getProperty 方法提供并行性。            //强制要求为属性的键和值使用字符串。返回值是 Hashtable 调用 put 的结果。            OutputStream fos = new FileOutputStream(filePath);            prop.setProperty(parameterName, parameterValue);            //以适合使用 load 方法加载到 Properties 表中的格式,            //将此 Properties 表中的属性列表(键和元素对)写入输出流            prop.store(fos, "Update '" + parameterName + "' value");        } catch (IOException e) {         System.err.println("Visit "+filePath+" for updating "+parameterName+" value error");        }    }    public static void main(String[] args) {     readValue("info.properties","url");        writeProperties("info.properties","age","21");        readProperties("info.properties" );        System.out.println("OK");    }



另可以用apache 的 类库 propertiesconfiguration

http://commons.apache.org/proper/commons-configuration/apidocs/org/apache/commons/configuration/PropertiesConfiguration.html

0 0
原创粉丝点击