包含空格的键的属性文件



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

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

相关内容

  • 没有找到相关文章