Groovy:读取属性文件,然后使用原始注释写入文件

时间:2019-08-08 13:15:42

标签: groovy

在Groovy中,是否可以读取包含注释的.properties文件,对代码进行一些属性更改,然后写入同一文件,同时将所有注释和空格保留在文件中的正确位置?

我目前正在使用类似这样的简单内容来读写“ app.properties”,但是生成的文件会丢失所有注释:

// read
props = new Properties()
propsFile = new File('C:\\path\\app.properties')
props.load(propsFile.newDataInputStream())

// write
props.setProperty('property.one', 'New value one')
props.store(propsFile.newWriter(), null)

我已经提出了以下两种解决方案,但是想知道是否有更好的方法吗?

  1. 创建我自己的作家,跟踪评论+空格。 k!

  2. 使用Apache Commons Configuration Java library中的PropertiesConfiguration类,在编写.properties时可以保留空格和注释。我还没有测试过。我不希望使用任何外部库。

1 个答案:

答案 0 :(得分:0)

我不知道有任何保留属性文件阅读器的注释。

另一方面,将输入通过修改传递到输出应该相当简单。

类似

props = new Properties()
propsFile = new File('C:\\path\\app.properties')
props.load(propsFile.newDataInputStream())

Map key2comments = [:]
propFile.eachLine{ line ->
  line.eachMatch( /(\w+)=([^#]+)(.*)/ ){ String[] parts ->
    key2comments[ parts[ 1 ] ] = parts[ 3 ] ?: ''
  }
}

props.setProperty('property.one', 'New value one')

propFile.createNewFile()
propFile.withWriter{ out ->
  props.each{ k, v ->
    out << k << '=' << v << key2comments[ k ] << '\n'
  }
}

您可能希望使用正则表达式来更准确地剪切注释。

相关问题