Java中的System.getProperty和properties.getProperty有什么区别

时间:2013-06-17 15:43:01

标签: java

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

我的问题是:他们是从prop.properties获得财产还是从不同地方获取财产,properties.getProperty()prop.properties获取财产,System.getProperty()从其他地方获取财产的地方。

3 个答案:

答案 0 :(得分:43)

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

properties.getProperty()是某人初始化类型为Properties的对象的结果。它们不尽相同,但you can get what System has as a Properties instance

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

答案 1 :(得分:13)

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

不一样。

答案 2 :(得分:3)

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

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