java中的属性文件如何工作?

时间:2015-04-18 18:57:54

标签: java properties-file

我在java中多次使用属性文件来存储静态值并从程序中删除硬编码的代码。但我用它只有几个说数百个值。但是我很好奇属性文件实际上是如何工作的?

他们如何操纵和存储文件中给出的值?

它们的效率如何,即如果我们在属性文件中使用数千个值,它是否与具有较小值的属性文件一样有效? 如果需要处理线性增加或处理开销很高?

4 个答案:

答案 0 :(得分:3)

Properties类扩展了Hashtable,因此它与使用String键的Hashtable一样高效,这非常有效。

答案 1 :(得分:1)

使用java.util.Properties操作属性文件的一个问题是删除任何注释。

考虑改为使用org.apache.felix.utils.properties.Properties(它建立在<{p>}的java.util.AbstractMap<K,V>之上

    <dependency>
        <groupId>org.apache.felix</groupId>
        <artifactId>org.apache.felix.utils</artifactId>
        <version>1.6.0</version>
    </depenency>

将保留,评论,订购,空白等。

插入的效果成本是 O(log(n))和条目数。

答案 2 :(得分:0)

你可以在代码中看到

public class Properties extends Hashtable<Object,Object>
 {
       // ... code
    }

它正在扩展HashTable类,因此效率很高,您还可以在setProperty类中检查storeloadProperties方法的javadoc。

答案 3 :(得分:0)

这里是source code;它非常直截了当。文件是read,在一个O(n)传递给Hashtable,其中有O(1)插入和检索。Writing返回文件的属性类似于O(n) 。成千上万的钥匙,甚至成千上万的钥匙都不会有问题。

听起来你想象Properties类每次修改文件时重新读取文件,或者每次访问属性时都重新读取文件。这不是Properties的工作原理,这样做会非常浪费。 Properties本质上是一个美化的Map实现,具有读取和写入文件内容的额外方法。