java中讀取配置檔案的一些方法 getResourceAsStream 和 直接 FileInputStream 以及 配置System.getProperty("user.dir")所得的工作目錄
配置檔案位於 /src/ 下的情況已經由上述博主列出,需要的可以移步檢視,即以下幾個情況
1.路徑:src/aa.xml
2.位於src下同一個包下
3.位於src下不同包
不過本博主的專案是web專案,而配置檔案放在src檔案下容易因為快取導致更新不及時,
所以我把配置檔案放在了 /WebContent/WEB-INF/ 資料夾下,可以放在其它非web專案情況也可以放在 /cfg/
此時配置檔案就不在src資料夾下了
所以就要直接用到檔案流
InputStream is = new FileInputStream(System.getProperty("user.dir") + "/WebContent/WEB-INF/" + resource);
注意這裡需要配置System.getProperty("user.dir")所得的工作目錄:
步驟:右鍵任意工程,“Debug As”,子選項“Debug Configurations...”,彈出視窗:
點選第二個標籤“Arguments”,
找到最下面的“Working directory:”,一般初始為Default,如果不符合所需也可以自行設定Other,博主用的是“Variables”中的“project_path”
這其中還有很多別的實用變數可以自行選擇。
我是在使用mybatis時,編寫工具類MybatisJDBC用到的new FileInputStream
public class MybatisJDBC
{
/**
* 獲取SqlSessionFactory
* @return SqlSessionFactory
*/
public static SqlSessionFactory getSqlSessionFactory()
{
String resource = "mybatis-config.xml";
SqlSessionFactory factory = null;
try
{
InputStream is = new FileInputStream(
System.getProperty("user.dir") + "/WebContent/WEB-INF/" + resource);
// System.out.println(MybatisJDBC.class.getClassLoader().getResourceAsStream(resource)); //null
factory = new SqlSessionFactoryBuilder().build(is);
}
catch (FileNotFoundException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
return factory;
}
}
不過,如果你的配置檔案在/src/下也可以這樣:(反正博主得到的是null啦,因為不在/src/下)
public class MybatisJDBC
{
/**
* 獲取SqlSessionFactory
* @return SqlSessionFactory
*/
public static SqlSessionFactory getSqlSessionFactory()
{
String resource = "mybatis-config.xml";
InputStream is =MybatisJDBC.class.getClassLoader().getResourceAsStream(resource);
SqlSessionFactory factory = new SqlSessionFactoryBuilder().build(is);
return factory;
}
}