java中的属性文件是如何工作的?
我在java中多次使用属性文件来存储静态值并从程序中删除硬编码代码。但我只使用了很少的值,比如说数百个值。但是,我很好奇属性文件实际上是如何工作的 他们如何操作和存储文件中给定的值java中的属性文件是如何工作的?,java,properties-file,Java,Properties File,我在java中多次使用属性文件来存储静态值并从程序中删除硬编码代码。但我只使用了很少的值,比如说数百个值。但是,我很好奇属性文件实际上是如何工作的 他们如何操作和存储文件中给定的值 它们的效率有多高,即,如果我们在属性文件中使用数千个值,它的效率是否与具有小值的属性文件的效率相同?如果所需的处理量呈线性增加,或者处理开销很高?Properties类扩展了Hashtable,因此它的效率与具有字符串键的Hashtable一样,这是非常有效的。Properties类扩展了Hashtable,因此它的
它们的效率有多高,即,如果我们在属性文件中使用数千个值,它的效率是否与具有小值的属性文件的效率相同?如果所需的处理量呈线性增加,或者处理开销很高?Properties类扩展了Hashtable,因此它的效率与具有字符串键的Hashtable一样,这是非常有效的。Properties类扩展了Hashtable,因此它的效率与具有字符串键的Hashtable一样,这非常有效。您可以在代码中看到
public class Properties extends Hashtable<Object,Object>
{
// ... code
}
公共类属性扩展哈希表
{
//…代码
}
它扩展了哈希表
类,因此它的效率很高,您还可以在属性
类中检查javadoc的设置属性
,存储
和加载
方法。您可以在代码中看到
public class Properties extends Hashtable<Object,Object>
{
// ... code
}
公共类属性扩展哈希表
{
//…代码
}
它扩展了
哈希表
类,以提高其效率,您还可以在属性
类中检查javadoc的设置属性
,存储
和加载
方法。使用java.util.Properties
操作属性文件的一个问题是会去掉任何注释
考虑改用org.apache.felix.utils.properties.properties
(它构建在
<dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.utils</artifactId>
<version>1.6.0</version>
</depenency>
org.apache.felix
org.apache.felix.utils
1.6.0
其中将保留注释、顺序、空白等
插入的性能代价是O(log(n))和条目数。使用
java.util.properties
操作属性文件的一个问题是,它会去掉任何注释
考虑改用org.apache.felix.utils.properties.properties
(它构建在
<dependency>
<groupId>org.apache.felix</groupId>
<artifactId>org.apache.felix.utils</artifactId>
<version>1.6.0</version>
</depenency>
org.apache.felix
org.apache.felix.utils
1.6.0
其中将保留注释、顺序、空白等
插入的性能代价是O(log(n))以及条目数。下面是一个简单的例子;它非常简单。文件在一次O(n)传递中进入一个哈希表,该哈希表有O(1)个插入和检索。返回文件的属性类似于O(n).数千把钥匙,甚至数万把钥匙都不会有问题
这听起来像是设想Properties
类在每次修改文件或每次访问属性时都重新读取文件。这不是Properties
的工作方式,这样做是非常浪费的。Properties
本质上是一个美化的Map
实现,有额外的读取方法然后将其内容写入文件。这是一个简单的方法;它非常简单。文件在一次O(n)传递中进入一个哈希表
,该哈希表有O(1)个插入和检索。返回文件的属性类似于O(n)。数千个键,甚至上万个键都不会有问题
这听起来像是设想Properties
类在每次修改文件或每次访问属性时都重新读取文件。这不是Properties
的工作方式,这样做是非常浪费的。Properties
本质上是一个美化的Map
实现,有额外的读取方法并将其内容写入文件。您有什么问题吗?@Puce正如我在问题中所说的,我很“好奇”。事实上,我正在从事某个项目,并使用属性文件。事实上,我正在使用此程序的设备的计算和内存资源有限,这就是我想知道的原因。不过,我也有一个替代解决方案,但我仍然想知道它,请您参考一些详细说明的链接。谢谢。哟你可以查看源代码来查看实现。你有什么问题吗?@Puce正如我在问题中所说的,我很“好奇”。事实上,我正在从事某个项目,并使用属性文件。事实上,我正在使用此程序的设备的计算和内存资源有限,这就是我想知道的原因。不过,我也有一个替代解决方案,但我仍然想知道它,请您参考一些详细说明的链接。谢谢。哟您可以查看源代码以查看实现。好的,但是使用streams从文件中读取并将其放入hastable中仍然会有开销。我说得对吗?您说得对!!在这种情况下,我们可以使用我们自己的方法。您所说的“自己的方法”是什么意思?请解释一下?IO性能成本将比插入映射的成本高出几个数量级。你真的不必担心它。@Bruce_Wayne这里我指的是类似ResourceBundle
的东西,但我同意@Donaldokay的观点,但使用流从文件中读取并放置它仍然会带来开销我说得对吗?你说得对!!那样的话我们可以用我们自己的方法。你说的“自己的方法”是什么意思?请解释?IO性能成本将比插入映射的成本高出几个数量级。你真的不必担心它。@Bruce_Wayne这里我指的是类似ResourceBundle
的东西,但我同意@Donald@Prashant是的,我知道是这一个或那一个。以前应该仔细检查一下。修好了我的回答。@Prashant是的,我知道是一个或另一个。之前应该仔细检查一下。修复