我有一个属性文件,名为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 解析器,因此您可以从文件中读取属性。