1

我试图在我的 config.properties 文件中存储一个日期,但是格式错误。

try{
    prop.setProperty("last_run_time",sdf.format(date));
    prop.store(new FileOutputStream("config.properties"),null);
}
catch (Exception e){
    e.printStackTrace();
}

的值sdf.format(date))是正确的,例如2013-08-23 02:47。问题是在属性文件中2013-08-23 02\:47被存储。从哪里来'\'

4

3 回答 3

4

\揭开你的:. 通常:用于定义具有值的键!您可以在此处阅读有关取消屏蔽和 .properties 文件的更多信息。

于 2013-08-23T13:51:53.140 回答
2

这是来自Java Doc:

键包含行中从第一个非空白字符开始到但不包括第一个未转义的“=”、“:”或除行终止符以外的空白字符的所有字符。所有这些键终止字符都可以包含在键中,方法是用前面的反斜杠字符转义它们;例如,

\:\=

将是两个字符的键“:=”。可以使用 \r 和 \n 转义序列包含行终止符。跳过键后的任何空格;如果键后面的第一个非空白字符是“=”或“:”,则忽略它,并且也跳过它后面的任何空白字符。该行上所有剩余的字符都成为相关元素字符串的一部分;如果没有剩余字符,则元素为空字符串“”。一旦识别出构成键和元素的原始字符序列,就如上所述执行转义处理。

我认为像\一样保存很好:

Java 属性文件不是供您阅读的文本。它是供 Java 代码读取的。转义\将确保下次您的 Java 应用程序读取它时,它将被解释为冒号,而不是键/值分隔符。

于 2013-08-23T13:54:21.447 回答
0

冒号是可能的键/值分隔字符之一。前导反斜杠将其转义(仅当密钥包含冒号时才需要这样做,但在总是转义时您更倾向于保存)。

有效分配的变体:

key value
key= value
key: value

请参阅Javadoc:Properties.load(Reader)

于 2013-08-23T13:58:37.147 回答