27

我有一个属性文件,名为prop.properties. 在我的主要代码中,我同时拥有System.getProperty()properties.getProperty()

我的问题是:他们是否都从不同的地方获得财产,prop.properties或者他们将从不同的地方properties.getProperty()获得财产,从其他地方获得财产prop.propertiesSystem.getProperty()从其他地方获得财产。

4

3 回答 3

46

System.getProperty()获取 JVM 定义的属性(JVM 本身或-D您可能在命令行中传递的任何选项)。可以在此处找到已定义属性的列表(感谢@NikitaBeloglazov)。

properties.getProperty()是某人初始化类型对象的结果Properties。它们是不一样的,尽管你可以得到System一个Properties实例

Properties对象通常是加载 Java 属性文件的结果(请参阅此处了解如何完成)

于 2013-06-17T15:46:35.807 回答
15

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");

不一样。

于 2013-06-17T15:47:42.843 回答
4

该类System是指您正在运行的 JVM(它将从您的操作系统获取信息)。当您使用getProperty时,System您将获得实际属性。

该类Property基本上是一个美化的哈希表。您可以自己完全定义它,所以当您这样做时,您getProperty()会得到您设置的结果。该类的用处Property在于它具有内置的 XML 解析器,因此您可以从文件中读取属性。

于 2013-06-17T15:49:17.987 回答