方式一:JavaSE项目下
jdbc.properties放在web/jdbc.properties
private static String driverName,url,uname,upwd;
static {
try {
Properties properties= new Properties();
//直接相对位置
FileInputStream fis= new FileInputStream(new File("web/jdbc.properties"));
properties.load(fis);
//Enumeration<?> enumr =properties.propertyNames();
//while (enumr.hasMoreElements()){
// String key= (String) enumr.nextElement();
// String value=properties.getProperty(key);
// System.out.println(value);
String driver=properties.getProperty("driver");
String url=properties.getProperty("url");
String uname=properties.getProperty("uname");
String upwd=properties.getProperty("upwd");
System.out.println(driver+"-"+url);
} catch (Exception e) {
e.printStackTrace();
}
}
方式二:JavaWeb项目下
jdbc.properties放在src/jdbc.properties
javaweb项目不能直接用输入流读取相对位置,且位置是web/jdbc.properties,因为运行之后有两个out,一个在tomcat下,一个在工作区下,所以无法区分。
private static String className,url,name,pwd;
static {
try {
Properties properties= new Properties();
//获取本类所在的文件夹(src或classes)下的jdbc.properties
String path=JDBUtil.class.getClassLoader().getResource("jdbc.properties").getPath();
FileInputStream fis= new FileInputStream(new File(path));
properties.load(fis);
//如果jdbc.properties里写的是jdbc.driver,下面参数前均带jdbc.
className =properties.getProperty("driver");
url=properties.getProperty("url");
name=properties.getProperty("username");
pwd=properties.getProperty("password");
Class.forName(className);
} catch (Exception e) {
e.printStackTrace();
}
}
但是经过我的验证: