JAVA設定檔讀取

來源:互聯網
上載者:User

可以通過Commons Configuration訪問儲存於屬性檔案和XML文檔中的配置資訊, 依賴的包還有Commons Language, Commons Collections和Commons Logging.

1. 通過屬性檔案配置應用程式

屬性檔案作為設定檔, 讀取簡單, 但配置內容不靈活.

例如有設定檔config.properties如下:

no=237
names=kiyho,sinkiang
correct=false

可以用以下代碼讀取:

import org.apache.commons.configuration.Configuration;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.PropertiesConfiguration;

public class PropertiesConfigDemo {
public static void main(String[] args) {
try {
Configuration config = new PropertiesConfiguration(
"config.properties");
System.out.println("score: " + config.getFloat("score"));
System.out.println("names: " + config.getList("names"));
System.out.println("correct: " + config.getBoolean("correct"));
} catch (ConfigurationException e) {
e.printStackTrace();
}
}
}

感覺挺不爽, 用個configuration, 還要依賴其他3個commons包.

另外可以通過util包的Properties類實現配置讀取, 只是讀取到的都是String類型, 需要自己轉換.

import java.io.IOException;
import java.util.Properties;

public class PropertiesDemo {
public static void main(String[] args) {
try {
Properties properties = new Properties();
properties.load(Thread.currentThread().getContextClassLoader()
.getResourceAsStream("config.properties"));
System.out.println("score: " + properties.getProperty("score"));
System.out.println("names: " + properties.getProperty("names"));
System.out.println("correct: " + properties.getProperty("correct"));
} catch (IOException e) {
e.printStackTrace();
}
}
}

2. 通過XML配置應用程式

假設有如下xml設定檔config.xml:

<?xml version="1.0" encoding="utf-8" ?>
<config>
<name>kiyho</name>
<name>sinkiang</name>
<info>
<age>100</age>
</info>
</conifig>

可以用以下代碼訪問:

import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.XMLConfiguration;

public class XmlConfigDemo {
public static void main(String[] args) {
try {
XMLConfiguration config = new XMLConfiguration("config.xml");
System.out.println(config.getList("name"));
System.out.println(config.getInt("info.age"));
} catch (ConfigurationException e) {
e.printStackTrace();
}
}
}

XML設定檔讀取除了用Configuation外, 還可以用JDOM讀取:

import java.io.IOException;
import java.util.List;

import org.jdom.Document;
import org.jdom.Element;
import org.jdom.JDOMException;
import org.jdom.input.SAXBuilder;

public class JdomXmlConfigDemo {
public static void main(String[] args) {
ClassLoader classLoader = Thread.currentThread()
.getContextClassLoader();
try {
Document document = new SAXBuilder().build(classLoader
.getResourceAsStream("config.xml"));
List<Element> names = document.getRootElement().getChildren("name");
String age = document.getRootElement().getChild("info").getChild(
"age").getTextTrim();
for (Element name : names)
System.out.println("name: " + name.getTextTrim());
System.out.println("age: " + age);
} catch (JDOMException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}

不依賴任何Commons包, 只要到jdom包, 不過讀取到的都是String, 需要自己轉換.

3. 複合配置

多個設定檔, 假設有3個設定檔: global.properties, local.properties, user.properties, 其中user優先於local, local優先於global. 那麼用以下這3個設定檔和1個引用設定檔可實現複合配置.

cofigs.xml內容如下:

<?xml version="1.0" encoding="utf-8" ?>
<configuration>
<properties fileName="user.properties" />
<properties fileName="local.properties" />
<properties fileName="global.properties" />
</configuration>

global.properties內容如下:

name=Default User
age=0
speed=10

local.properties內容如下:

name=kiyho
age=20

user.properties內容如下:

age=100

程式讀取如下:

import org.apache.commons.configuration.Configuration;
import org.apache.commons.configuration.ConfigurationException;
import org.apache.commons.configuration.ConfigurationFactory;

public class ConfigsDemo {
public static void main(String[] args) {
ConfigurationFactory factory = new ConfigurationFactory();
factory.setConfigurationFileName("configs.xml");

try {
Configuration config = factory.getConfiguration();

System.out.println("name: " + config.getString("name"));
System.out.println("age: " + config.getInt("age"));
System.out.println("speed: " + config.getFloat("speed"));
} catch (ConfigurationException e) {
e.printStackTrace();
}
}
}

另外, ConfigurationFactory依賴的包有Commons Digester和Commons beanutils

 

參考資料:http://www.52z.com/info/html/28911.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.