在.properties文件java中存储日期

时间:2013-08-23 13:50:17

标签: java properties

我正在尝试在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被存储。 '\'来自哪里?

3 个答案:

答案 0 :(得分:4)

\取消屏蔽您的:。 Normaly :用于定义具有值的键!您可以阅读有关取消屏蔽和.properties文件here的更多信息。

答案 1 :(得分:2)

这来自Java Doc:

  

该键包含以。开头的行中的所有字符   第一个非白色空格字符,最多但不包括   首先是未转义的'=',':'或除了一行之外的空白字符   终止。所有这些关键终止字符都可以包含在中   用前面的反斜杠字符转义它们的关键;对于   例如,

     

\:\ =

     

将是双字符键“:=”。行终止符可以是   包括使用\ r和\ n转义序列。任何空白之后   键被跳过;如果键后的第一个非空白字符   是'='或':',然后忽略它后面的任何空白字符   它也被跳过了。线上的所有剩余字符成为一部分   关联元素字符串;如果没有剩余   字符,元素是空字符串“”。一旦原始人物   构成关键和元素的序列被识别,逃避   如上所述进行处理。

我认为像\:

一样保存

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

答案 2 :(得分:0)

冒号是可能的键/值分隔字符之一。 前导反斜杠转义它(只有当键包含一个冒号时才需要这个,但是当你总是转义它时,你在保存方面更多)。

有效作业的变体:

key value
key= value
key: value

请参阅Javadoc: Properties.load(Reader)