天天看点

java读取properties文件

关键字: java读取properties配置文件 今天要将以前一个项目的数据连接改成从properties文件中配置。找了好久,网上也不少,可就是读取文件时总是找不到文件在哪(我放在classes目录下了)。最后终于成功,记下,以做纪念。

java代码

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);// 与类在同一级,也可用/package/path/to/filename

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

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()方法 示例:

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

用resourcebundle读取.properties文件可避免路径问题

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

//process为文件名,切记不要加 .properties, url是文件里的键名

    resourcebundle bundle = resourcebundle.getbundle("com.ihandy.smsoc.app.process");  

   string s = bundle.getstring("url");  

system.out.println(s);  

purl = s;  

3、使用java.util.propertyresourcebundle类的构造函数

inputstream in = new bufferedinputstream(new fileinputstream(name));   

resourcebundle rb = new propertyresourcebundle(in);   

4、使用class变量的getresourceasstream()方法

inputstream in = 类名.class.getresourceasstream(name);   

p.load(in);   

5、使用class.getclassloader()所得到的java.lang.classloader的getresourceasstream()方法 示例:

inputstream in = 类名.class.getclassloader().getresourceasstream(name);   

6、使用java.lang.classloader类的getsystemresourceasstream()静态方法 示例:

inputstream in = classloader.getsystemresourceasstream(name);   

7、servlet中可以使用javax.servlet.servletcontext的getresourceasstream()方法 示例:

inputstream in = context.getresourceasstream(path);