117

我有一个带有 List 值(逗号分隔)的属性的属性文件,如何在多行中编写此属性?(逗号后的反斜杠)?

我找不到有关此的任何信息,或者至少找不到有关将逗号转义为逗号和反斜杠的信息。

4

4 回答 4

178

如果您指的是以下内容;这仅依赖于反斜杠+行尾。我刚刚发现它记录在: http ://docs.oracle.com/javase/6/docs/api/java/util/Properties.html

primes = 2,\
    3,\
    5,\
    7,\
    11
于 2012-01-23T21:03:15.937 回答
29

检查属性文件的用户指南

特殊字符和转义

如果您需要属性中的特殊字符,如换行符、制表符或 unicode 字符,您可以使用与 Java 字符串相同的转义符号来指定它。列表分隔符(默认为“,”)也可以转义:

key = This \n string \t contains \, escaped \\ characters \u0020

反斜杠更难。

列表和数组

您可以通过在多行上使用相同的键来指定属性文件中的值列表:

# chart colors
colors.pie = #FF0000;
colors.pie = #00FF00;
colors.pie = #0000FF;
于 2012-01-23T20:17:40.390 回答
22

您需要将\n内容中的字符和行继续转义(\<eol>在行尾)结合起来,以获取实际上在属性文件和返回值中表示的多行属性:

KEY1=first line\n\
second line\n\
last line
KEY2=another key

不确定是否可以将 commons-configuration 配置为实际使用此语法进行编写。

于 2016-08-15T16:53:19.883 回答
0

另一种选择可能是使用一种旨在支持多行值的属性格式。

XML 可以很好地处理多行属性,但它有很多噪音。

MProps:是几乎不需要特殊格式的格式示例:https ://github.com/mprops/mprops-java

于 2018-06-05T17:01:20.673 回答