我想直接将属性文件读入地图。 我找到了一个例子:
def propsFile = new File(fileName)
props.load(propsFile.newDataInputStream())
props.each { k,v->
println "${k} /// ${v}\n"
}
好吧,它适用于看起来像这样的行:
toto=titi
即。其中键不包含空格。 但我必须处理一个属性文件,其中键将是
This is a key (example)=Value
其中This is a key (example)
将成为关键。
上面的例子根本不起作用,因为它将第一个单词(This)作为键。
那么,有没有办法告诉键值分隔符是=而没有其他字符。
如果没有,il将逐行读取并拆分......但如果有的话,我更喜欢更优雅的解决方案。
感谢您的帮助 J.L.P。
答案 0 :(得分:0)
如果您的属性文件不符合规范(在密钥名称中使用转义空格),那么您必须编写我认为自己的解析器,然后逐行进行。
虽然不太难,但您应该可以使用以下内容:
String props = '''toto = titi
|foo=bar
|# comment
|
|way and hay = yes'''.stripMargin()
Map properties = props.split( '\n' )
.findAll { !it.startsWith( '#' ) && it.trim().length() }
.collectEntries { line ->
line.tokenize( '=' )*.trim()
}