将属性存储到文本文件中时,文本文件中属性的写入顺序与代码执行的顺序相反

时间:2016-02-28 10:45:19

标签: java properties text-files outputstream

我是Java的新手,正在尝试学习类属性。我想出了下面的代码。但是,当我运行代码时,我注意到random.txt中存储的三个属性与代码执行的顺序相反。为什么会这样?有人可以赐教吗?在此先感谢您的帮助!

Properties p1 = new Properties();
    try (OutputStream os1 = new FileOutputStream("random.txt")){
        p1.setProperty("1", "one");
        p1.setProperty("2", "two");
        p1.setProperty("3", "three");
        p1.store(os1, "comment");
    } catch(IOException e){
        e.printStackTrace();
    }

3 个答案:

答案 0 :(得分:2)

Properties类用于维护键的列表,其中键是String,值也是String。 Properties类扩展了Hashtable类。

在JDK中未定义基于散列的集的迭代顺序。

但是,您可以通过创建自己的属性子类并覆盖put()setProperty()方法,以原始顺序从属性文件中提取值。

答案 1 :(得分:1)

请注意,Properties适用于(扩展)Hashtable

地图固有地"无序"。

如果您想了解更多信息并真正存储订购数据,请查看此链接How can I write Java Properties in a defined order。这个问题之前已经得到了回答:)

答案 2 :(得分:1)

你可以在每个setProperty之后调用store,如上所述,商店正在使用的数据类型可能是LIFO(后进先出),因此最后要设置的是保存的第一件事。

尝试在每个设置属性后调用store!