我有一个属性文件,名为prop.properties
. 在我的主要代码中,我同时拥有System.getProperty()
和properties.getProperty()
。
我的问题是:他们是否都从不同的地方获得财产,prop.properties
或者他们将从不同的地方properties.getProperty()
获得财产,从其他地方获得财产prop.properties
并System.getProperty()
从其他地方获得财产。
我有一个属性文件,名为prop.properties
. 在我的主要代码中,我同时拥有System.getProperty()
和properties.getProperty()
。
我的问题是:他们是否都从不同的地方获得财产,prop.properties
或者他们将从不同的地方properties.getProperty()
获得财产,从其他地方获得财产prop.properties
并System.getProperty()
从其他地方获得财产。
System.getProperty()
获取 JVM 定义的属性(JVM 本身或-D
您可能在命令行中传递的任何选项)。可以在此处找到已定义属性的列表(感谢@NikitaBeloglazov)。
properties.getProperty()
是某人初始化类型对象的结果Properties
。它们是不一样的,尽管你可以得到System
一个Properties
实例。
Properties
对象通常是加载 Java 属性文件的结果(请参阅此处了解如何完成)
System.getProperty(propName)
是System.getProperties().getProperty(propName)
.
然而,java.util.Properties
它只是 的一个子类java.utils.Hashtable
,因此它的实例可以在代码中的任何地方创建并填充任何数据。很明显的代码
Properties props = System.getProperties();
props.getProperty("os.name");
是相同的
System.getProperty("os.name");
然而
Properties props = new Properties();
props.load(new FileInputStream("myprops.properties"))
props.getProperty("os.name");
不一样。
该类System
是指您正在运行的 JVM(它将从您的操作系统获取信息)。当您使用getProperty
时,System
您将获得实际属性。
该类Property
基本上是一个美化的哈希表。您可以自己完全定义它,所以当您这样做时,您getProperty()
会得到您设置的结果。该类的用处Property
在于它具有内置的 XML 解析器,因此您可以从文件中读取属性。