1. 程式人生 > >java讀取resources下的配置檔案+檔案相對路徑小結

java讀取resources下的配置檔案+檔案相對路徑小結

一.檔案讀取

1.利用java.util自帶的Properties類讀取

Properties類的load方法提供了兩種讀取檔案的方式

(1)reader作為引數,以字元流方式讀取

Properties properties = new Properties();
try {
    properties.load(new InputStreamReader(new FileInputStream(fileName),"utf-8"));
} catch (IOException e) {
    e.printStackTrace();
}
String url = properties.getProperty("url")

在load引數裡面可以用任意的io裝飾類去裝飾檔案輸入流,只要最終裝飾成字元流即可;InputStreamReader方法有編碼引數,若讀取含有中文的檔案,文字檔案預設編碼為ANSI(在windows中就是GBK),所以將編碼引數設定為GBK;或者我的idea系統設定為utf-8編碼,所以只要先將檔案轉為utf-8編碼即可

(2)inputStream作為引數,以位元組流方式讀取

Properties properties = new Properties();
try {
    properties.load(new FileInputStream(fileName));
} catch (IOException e) {
    e.printStackTrace();
}

String url = properties.getProperty("url")

同理,load方法引數可以新增任意的裝飾元件

2.利用java.util自帶的ResourceBundle類讀取

ResourceBundle bundle = ResourceBundle.getBundle("config");
String url = bundle.getString("url");

該方法預設讀取的是resources資料夾下的以.properties為字尾的檔案,程式碼中的例子即為config.properties

二.檔案路徑

有幾種方式

1.絕對路徑,不贅述

2.相對路徑

(1)利用System.getProperty方法

System.getProperty("user.dir")+"/src/main/resources/config.properties"

System.getProperty("user.dir")會定位到專案的根目錄,可以得到該工程專案所有檔案的相關路徑及環境配置資訊 (2)利用類裝載器

String fileName = this.getClass().getClassLoader().getResource("config.properties").getPath(); InputStream in = this.getClass().getClassLoader().getResourceAsStream("config.properties");

二者都定位到的是編譯過後class檔案所在同級目錄下的配置檔案。前者可以獲取檔案完整路徑,然後通過reader字元流讀取檔案,對應於上述properties類load方法中的(1),後者可以直接作為位元組流引數輸入load方法對應(2)

(3)預設

properties.load(new InputStreamReader(new FileInputStream("config.properties")));

預設定位從專案根目錄開始,上面例子讀取的是專案根目錄下的config.properties檔案