JAVA讀取properties時路徑注意問題,
阿新 • • 發佈:2019-01-30
先來看看建立的測試工程目錄
屬性檔案我們放在包test下,當然了,一般在實際開發過程中不建議這樣做,建立把屬性檔案放在src目錄下,現在放在包下主要是便於瞭解路徑的問題。
下面來看一段讀取屬性檔案的程式碼,屬性檔案配置了一個類Hello的K-V鍵值,我們要從中讀取並載入到記憶體中來。
ReadProperties.properties
v=com.luhy.test.Hello
Hello類:
package com.luhy.test; public class Hello { public void run(){ System.out.println("Hello"); } }
ReadProperties.java
package com.luhy.test; import java.util.Properties; public class ReadProperties { public static void main(String[] args) throws Exception{ String filename = "com/luhy/test/ReadProperties.properties"; Properties props = new Properties(); props.load(ReadProperties.class.getClassLoader().getResourceAsStream(filename)); String h = props.getProperty("v"); Object o = Class.forName(h).newInstance(); Hello hello = (Hello)o; hello.run(); } }
執行完列印輸出:
Hello
下面再來看一下編譯後的bin目錄
可見編譯後屬性檔案被自動放到相應的包內,當然了,這裡的bin相當於原始碼中的src,實際開發中一般放在此src目錄下,這樣在釋出專案時就不用折騰了。
說明:
1、props.load(ReadProperties.class.getClassLoader().getResourceAsStream(filename));意思是獲得從Properties類獲得類載入器(類載入器主要有四種,分別載入不同型別的類,載入只是把class檔案放進記憶體,並沒有產生物件),並把指定檔案轉化為流。這一步,有很多新手,直接往load()裡填檔名或具體檔案路徑名,程式執行時會報錯找不到指定路徑。所以,一定要注意這點。