我尝试使用Properties
方法覆盖Properties#setProperty()
文件中的现有属性值。
但是我得到了额外的反斜杠......
例如,我在属性文件中有以下条目:
#url to server
url=http://192.22.222.222
当我尝试用新值http://192.22.222.222
覆盖值http://192.33.333.333
时,我得到了以下结果:
http\://192.33.333.333
即。第一次反弹是不必要的。我
哪里有问题?
答案 0 :(得分:4)
没问题。再次加载文件时,您将不会在属性值中看到反斜杠。逃避代码选择逃避所有冒号(可能都是等号),无论是否严格要求。 (当它们不是密钥的一部分时,你不有来逃避它们,但它可能使代码更简单。)
只要您始终使用Properties.load
方法之一加载代码,就应该看不出任何问题。
答案 1 :(得分:2)
来自the doc:
该键包含以。开头的行中的所有字符 第一个非白色空格字符,最多但不包括 首先是未转义的
'='
,':'
或除了一行之外的空白字符 终止。所有这些关键终止字符都可以包含在中 用前面的反斜杠字符转义它们的关键;对于 例如,
\:\=
将是双字符键
":="
。
答案 2 :(得分:1)
在编写属性值时,Java属性将转义一些像冒号这样的字符。 请参阅Properties#store。
这被认为是一个特性,因为属性格式允许冒号作为键/值分隔符(参见属性#load方法的来源)