先來看看建立的測試工程目錄
屬性文件我們放在包test下,當然了,一般在實際開發過程中不建議這樣做,建立把屬性文件放在src目錄下,現在放在包下主要是便於了解路徑的問題。
下面來看一段讀取屬性文件的代碼,屬性文件配置了一個類Hello的K-V鍵值,我們要從中讀取並加載到內存中來。
Java 8 中 HashMap 的性能提升 http://www.linuxidc.com/Linux/2014-04/100868.htm
Java 8 的 Nashorn 引擎 http://www.linuxidc.com/Linux/2014-03/98880.htm
Java 8簡明教程 http://www.linuxidc.com/Linux/2014-03/98754.htm
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()裡填文件名或具體文件路徑名,程序運行時會報錯找不到指定路徑。所以,一定要注意這點。