0

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

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) 作为键。那么,有没有办法告诉键值分隔符是 = 而没有其他字符。

如果没有,我将逐行阅读并拆分......但如果有的话,我更喜欢更优雅的解决方案。

感谢您的帮助 JLP

4

1 回答 1

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()
}
于 2013-01-25T14:57:25.390 回答