包含空格的键的属性文件

时间:2013-01-25 14:42:11

标签: file properties groovy map

我想直接将属性文件读入地图。 我找到了一个例子:

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。

1 个答案:

答案 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()
}