我有一个名为prop.properties
的属性文件。在我的主要代码中,我有System.getProperty()
和properties.getProperty()
。
我的问题是:他们是从prop.properties
获得财产还是从不同地方获取财产,properties.getProperty()
从prop.properties
获取财产,System.getProperty()
从其他地方获取财产的地方。
答案 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解析器,因此您可以从文件中读取属性。