上午写一个读取配置文件的链接工具类,路径搞了半天,百度了一些也没有找到合适的,最后终于琢磨出来了,把过程记录下来,供以后查阅。
我开始写的是java工程
首先写了个简单的获取路径的方法,主要是后面用
package com.test.utils;
import java.net.URLClassLoader;
public class UtilTools {
public UtilTools(){}
/**
*
* @return String path 返回项目的bin路径
* @author JandMin
*/
public static String getXmlPath(){
URLClassLoader cl = (URLClassLoader) Thread.currentThread().getContextClassLoader();//获得当前线程的类加载器
String path=cl.findResource("").getPath();//获得绝对路径
//System.out.println(path);///E:/workpace/Test/bin/
path = path.substring(1);//去掉第一个/
//System.out.println(path);//E:/workpace/Test/bin/
return path;
}
}
然后是jdbc.properties,我是放在src下面建了个文件夹resources,这个比较简单,就不写出来了
接下来就是数据库连接工具类
package com.test.db;
import java.io.FileReader;
import java.io.IOException;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
import com.test.utils.UtilTools;
public class DBUtils {
private String url;//数据库url地址,不同的数据库不一样,我这里用的是oracle
private String driver;//数据库驱动路径
private String userName;//账号
private String pass;//密码
private Properties proper;//读取配置文件类
private Connection conn = null;//链接,卸载这里是方便其它方法调用
private FileReader fr;//读取配置文件IO类
public DBUtils(){}
/**
* 获取数据库链接的方法
* @author JandMin
*/
private void getConnection(){
proper = new Properties();
String path = UtilTools.getXmlPath();
//System.out.println(path);// E:/workpace/Test/bin/
path = path.replace("bin/", "");//因为是放在src其它文件夹下,需要把bin去掉
path += "resources/properties/jdbc.properties";// /Test/resources/properties/jdbc.properties--》这是我的properties的全路径名
//System.out.println(path);// E:/workpace/Test/resources/properties/jdbc.properties
try {
fr = new FileReader(path);
proper.load(fr);
url = proper.getProperty("url");
driver = proper.getProperty("driver");
userName = proper.getProperty("userName");
pass = proper.getProperty("pass");
Class.forName(driver);
conn = DriverManager.getConnection(url, userName, pass);
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (SQLException e) {
e.printStackTrace();
}
}
}
我测试了,没有问题,注意下配置文件不要出错了!