akh*_*hil 1 java parsing configurationsection
我最近开始使用Java.我试图找到一种以易于阅读的方式指定应用程序配置值的好方法.我希望能够创建基本配置文件,然后包含在派生配置文件中,该文件也允许覆盖基本文件中的值.
不确定java属性文件是否提供第二个功能.在google上搜索后,我发现了apache commons配置和ini4j,但我不确定它们是否得到了积极维护或有多少人实际使用它们.
一个简单的选项是java.util.Properties
,它不仅支持从key=value
XML文件加载配置数据,还直接支持您描述的分层默认值.
例如:
Properties base = new Properties();
base.load(new FileReader("base.cfg"));
Properties custom = new Properties(base);
custom.load(new FileReader("custom.cfg"));
// 'custom' defers to 'base' for properties that were not in "custom.cfg".
// custom.remove(key) can be used to restore a default from 'base'.
Run Code Online (Sandbox Code Playgroud)
请注意,Properties
没有对分组/分层属性的内置支持(例如,XML树或带有节的INI文件),但通常会在许多情况下完成工作.
例如,如果自定义配置包含指定基本文件名的属性,则可以在自定义配置之后加载基本配置(在下面的一些评论中,这可能很有用):
Properties base = new Properties();
Properties custom = new Properties(base);
custom.load(new FileReader("custom.cfg"));
base.load(new FileReader(custom.getProperty("basefile")));
Run Code Online (Sandbox Code Playgroud)
顺便说一下,你提到的两个库(Apache Commons Configuration和ini4j)都处于良好的工作状态.Apache库支持更广泛的格式,并且更加积极地维护,但是ini4j已经成熟(已经存在了大约10年,INI文件没有改变)并且运行良好.我个人曾多次使用它们并且它们总是按照承诺交付.
为清楚起见,所有空/异常处理都不在示例中.
归档时间: |
|
查看次数: |
584 次 |
最近记录: |