我想直接将属性文件读入地图。我找到了一个例子,例如:
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.
如果你的属性文件不遵循规范(键名中有转义空格),那么我相信你必须编写自己的解析器,并逐行进行。
不过不太难,你应该能够使用这样的东西:
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()
}