我正在寻找一个允许以下列格式写入和读取属性文件的Java API:
<prefix>.<index>.<suffix>=<value>
例如:
launcher.1.id=23
launcher.1.name=abc
launcher.1.date=123123
launcher.2.id=sdfsdf
launcher.2.name=Asdfdsf
launcher.2.date=ghfgh
cec.1.id=sdfsdf
cec.1.name=Asdfdsf
cec.1.date=ghfgh
cec.2.id=sdfsdf
cec.2.name=Asdfdsf
cec.2.date=ghfgh
#...
log4j使用非常相似的格式来配置appender:
log4j.rootLogger=debug, stdout, R
log4j.appender.stdout=org.apache.log4j.ConsoleAppender
log4j.appender.stdout.layout=org.apache.log4j.PatternLayout
log4j.appender.stdout.layout.ConversionPattern=%5p
log4j.appender.R=org.apache.log4j.RollingFileAppender
log4j.appender.R.File=example.log
log4j.appender.R.MaxFileSize=100KB
log4j.appender.R.MaxBackupIndex=1
log4j.appender.R.layout=org.apache.log4j.PatternLayout
log4j.appender.R.layout.ConversionPattern=%p %t %c - %m%n
任何人都知道是否有像这样的案例的Java库?
谢谢, 伊利亚安德
答案 0 :(得分:1)
你有没有看过Apache commons-configuration?它们提供类似xpath的支持来查询这些属性文件,并且如果您决定更改格式,还可以让您在xml,ini等之间来回迁移。
答案 1 :(得分:0)
正确的解决方案是重新考虑格式并使用JSON。谢谢@ControlAltDel的想法。
答案 2 :(得分:-1)
有两种可能性:
launcher.count = 2
您枚举所有键并寻找合适的模式:
for (Object o : properties.keySet()) {
String key = (String) o;
if (key.startsWith("launcher")) {
...
} else if (key.startsWith("cec")) {
...
}
}
答案 3 :(得分:-2)
java.util.Properties
String string = properties.getProperty("launcher.1.name");
properties.setProperty("launcher.1.name", "abc");
如果您需要枚举中的所有属性,
public Enumeration<?> propertyNames()
Returns an enumeration of all the keys in this property list,
including distinct keys in the default property list if a key of
the same name has not already been found from the main properties list.