package day01;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.Properties;
/**
* 测试配置文件的读取-config.properties
* 读取资源文件的多种方式(四种)
*/
public class JDBCDemo2 {
public static void main(String[] args) {
InputStream is = null;
FileInputStream fis = null;//用于读取根目录下的配置文件
try{
//使用Properties去读取配置文件(建议采用第一种万能的方式来读取资源文件)
Properties p = new Properties();
/**
* 第一种方式: 用类加载器读取资源文件
* 适用情形:资源文件和类文件在不在同一目录都可以
* 注意:getResourceAsStream里的参数要写资源文件的全限定路径,
* 包名+文件名且开头千万不要写"/"
*/
is = JDBCDemo2.class.getClassLoader().
getResourceAsStream("wq/config.properties");//包名+文件名
/**
* 第二种方式: 用类加载器读取资源文件
*/
// is = new FileInputStream("./src/day01/config.properties");//绝对路径(也可使用相对路径)
/**
* 第三种方式:用class.getResourceAsStream()(其实还是用的类加载器)
* (1)适用情形:如果资源文件和类文件在同一包下,直接写资源文件的名称就行了,
* 注意:资源文件的名称前面不需要加“/”
*
* (2)若资源文件和类文件不在同一个目录下的情况
* 注意:开头一定要加上”/“
*
*/
// is = JDBCDemo2.class.getResourceAsStream("config.properties");
// is = JDBCDemo2.class.getResourceAsStream("/wq/config.properties");//(/包名+类名)
/**
* 第四种方式:若配置文件位于根目录下,用FileInputStream流来读取文件,再调用p.load()方法
*/
// fis = new FileInputStream("config.properties");//注意关闭fis流
// p.load(fis);
p.load(is);//p.load(InputStream/InputReader)可传入的参数为字节流或字符流
String driver = p.getProperty("driver").trim();
String url = p.getProperty("url").trim();
String user = p.getProperty("user").trim();
String password = p.getProperty("password").trim();
System.out.println(driver+"\n"+url+"\n"+user+"\n"+password);
}catch(Exception e){
e.printStackTrace();
}finally{
//通过Properties读取文件(通过流读取)后,应该关闭流(抛出异常)
try {
is.close();
} catch (IOException e) {
e.printStackTrace();
}
}
}
}
/**
* 总结:1.若配置文件在src目录下,则采用FileInputStream fis= new FileInputStream("文件名称");
* 调用p.load(fis)加载即可,最后关闭流
*
* 2.若文件在其他目录下,src或者其他(例如:resource)路径下,则可以通过
* InputStream is = 类名.class.getClassLoader().getResourceAsStream("包名/文件名");
* 调用p.load(is)加载即可,最后关闭流
*/
测试结果如下:
oracle.jdbc.driver.OracleDriver
jdbc:oracle:thin:@localhost:1521:orcl
scott
jsd161102