一 使用原生方式讀取配置檔案
1 檔案系統加載
Java代碼
InputStream in = new FileInputStream("config.properties");
Properties p = new Properties();
p.load(in);
2 類加載方式
A 與類同級目錄
InputStream in = Main.class.getResourceAsStream("config.properties");
B 在類的下一級目錄
InputStream in =
Main.class.getResourceAsStream("resource/config.properties");
C 指定加載資源配置檔案的classes相對路徑
Main.class.getResourceAsStream("/test/resource/config.properties");
注意事項:如上以/開頭的是指從根目錄開始加載。
D 使用類加載器的方式
InputStream in = Main.class.getClassLoader().
getResourceAsStream("test/resource/config.properties");
E 資源配置檔案在classes下
Main.class.getClassLoader().getResourceAsStream("config.properties");
二 使用apache提供的功能元件
參照網上相關資料
1 讀取properties檔案的方式
示例代碼
import java.util.List;
import org.apache.commons.configuration.Configuration;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;
public class PropertiesConfigurationDemo {
public static void main(String[] args) throws ConfigurationException {
Configuration config = new PropertiesConfiguration(PropertiesConfigurationDemo.class.getResource("system-config.properties"));
String ip = config.getString("ip");
String[] colors = config.getStringArray("colors.pie");
for (int i = 0; i < colors.length; i++) {
System.out.println(colors[i]);
}
List<?> colorList = config.getList("colors.pie");
for (int i = 0; i < colorList.size(); i++) {
System.out.println(colorList.get(i));
}
}
配置檔案代碼:
ip=10.10.1.1
colors.pie = #FF0000, #00FF00, #0000FF
2 讀取XML檔案的方式
import org.apache.commons.configuration.XMLConfiguration;
public class XMLConfigurationDemo {
Configuration config = new XMLConfiguration(XMLConfigurationDemo.class
.getResource("system-config.xml"));
String ip = config.getString("ip");
String account = config.getString("account");
String password = config.getString("password");
List<?> roles = config.getList("roles.role");
System.out.println("IP: " + ip);
System.out.println("Account: " + account);
System.out.println("Password: " + password);
for (int i = 0; i < roles.size(); i++) {
System.out.println("Role: " + roles.get(i));
}
}
Xml檔案代碼:
Xml代碼
<config>
<ip>10.10.1.1</ip>
<account>jini</account>
<password>jakarta99</password>
<roles>
<role>admin</role>
<role>manager</role>
<role>user</role>
</roles>
</config>
示例2
public class XmlConfigurationExample {
public static void main(String[] args) throws Exception,
ConfigurationException {
String resource = "main/global.xml";
Configuration config = new XMLConfiguration(resource);
// 隻有new一個XMLConfiguration的執行個體就可以了.
List<?> startCriteria = config.getList("start-criteria.criteria");
for (int i = 0; i < startCriteria.size(); i++) {
System.out.println("Role: " + startCriteria.get(i));
int horsepower = config.getInt("horsepower");
System.out.println(horsepower);
global.xml檔案代碼
<?xml version="1.0" encoding="ISO-8859-1" ?>
<engine-config>
<start-criteria>
<criteria>
Temperature Above -10 Celsius
</criteria>
Fuel tank is not empty
</criteria>
</start-criteria>
<volume>4 Liters</volume>
<horsepower>42</horsepower>
</engine-config>
示例3:混合讀取二種檔案
import org.apache.commons.configuration.CompositeConfiguration;
public class Test {
CompositeConfiguration config = new CompositeConfiguration();
config.addConfiguration(new PropertiesConfiguration(
"main/global.properties"));
config.addConfiguration(new XMLConfiguration("main/global.xml"));
List<?> startCriteria = config.getList("start-criteria.criteria");
System.out.println("Speed: " + config.getFloat("speed"));
System.out.println("Names: " + config.getString("name"));
Xml如上所示,global.properties檔案如下:
speed=50
name=Default User
示例4
import java.net.URL;
import org.apache.commons.configuration.ConfigurationFactory;
public class PropertiesXmlConfigurationExample {
public static void main(String[] args) throws Exception {
ConfigurationFactory factory = new ConfigurationFactory();
URL configURL = PropertiesXmlConfigurationExample.class.getResource("additional-xml-configuration.xml");
factory.setConfigurationURL(configURL);
Configuration config = factory.getConfiguration();
System.out.println("Horsepower: " + horsepower);
additional-xml-configuration.xml檔案内容:
<?xml version="1.0" encoding="ISO-8859-1" ?>
<configuration>
<properties fileName="global.properties"/>
<xml fileName="global.xml"/>
</configuration>
相關API說明:
# PropertiesConfiguration 從一個 property 檔案中加載配置 .
# XMLConfiguration 從 XML 檔案中加載配置資訊 .
# XMLPropertyListConfiguration 也可以讀取 XML 被 Mac OSX 使用變量 .
# JNDIConfiguration 利用 jndi 樹的一個鍵值,可以傳回一個值,這個值來作為配置資訊
# BaseConfiguration 通路記憶體中的一個配置對象 .
# HierarchicalConfiguration 一個在記憶體中的配置對象,這個對象可以處理複雜的資料結構 .
# SystemConfiguration 一個利用系統屬性的配置資訊
# ConfigurationConverter 把 java.util.Properties 或者 org.apache.collections.commons.ExtendedProperties 轉化為一個 Configuration 對象
參考資料:
common-configuration讀取xml,properties檔案
http://javamy.iteye.com/blog/252619
使用apache common configuration讀取配置檔案或修改配置檔案
http://www.suneca.com/article.asp?id=9若轉載請注明出處!若有疑問,請回複交流!