java配置文件读取

363922298 贡献于2012-10-25

作者 微软用户  创建于2012-07-20 09:00:00   修改者微软用户  修改于2012-07-20 09:01:00字数3819

文档摘要:可以通过Commons Configuration访问存储于属性文件和XML文档中的配置信息, 依赖的包还有Commons Language, Commons Collections和Commons Logging.
关键词:

JAVA配置文件读取 JAVA配置文件读取 可以通过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: kiyho sinkiang 100 可以用以下代码访问: 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 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内容如下: 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.

下载文档到电脑,查找使用更方便

文档的实际排版效果,会与网站的显示效果略有不同!!

需要 3 金币 [ 分享文档获得金币 ] 0 人已下载

下载文档