在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)
我已经提出了以下两种解决方案,但是想知道是否有更好的方法吗?
创建我自己的作家,跟踪评论+空格。 k!
使用Apache Commons Configuration Java library中的PropertiesConfiguration类,在编写.properties时可以保留空格和注释。我还没有测试过。我不希望使用任何外部库。
答案 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'
}
}
您可能希望使用正则表达式来更准确地剪切注释。