Java中的Properties类

属性对象包含作为字符串的键和值对。 java.util.Properties类是Hashtable的子类。
它可以用于基于属性键获取属性值。 Properties类提供了从属性文件中获取数据并将数据存储到属性文件中的方法。而且, 它可以用来获取系统的属性。
属性文件的优点
如果从属性文件中更改了信息, 则不需要重新编译:如果从属性文件中更改了任何信息, 则无需重新编译java类。它用于存储经常更改的信息。
属性类的构造方法

方法 描述
Properties() 它创建一个没有默认值的空属性列表。
Properties(Properties defaults) 它使用指定的默认值创建一个空的属性列表。
属性类的方法
下面给出了Properties类的常用方法。
方法 描述
public void load(Reader r) 它从Reader对象加载数据。
public void load(InputStream is) 它从InputStream对象加载数据
public void loadFromXML(InputStream in) 它用于将XML文档表示的指定输入流上的所有属性加载到此属性表中。
public String getProperty(String key) 它根据键返回值。
public String getProperty(String key, String defaultValue) 它使用指定的键搜索属性。
public void setProperty(String key, String value) 它调用Hashtable的put方法。
public void list(PrintStream out) 它用于将属性列表打印到指定的输出流。
公共无效列表(PrintWriter输出) 它用于将属性列表打印到指定的输出流。
公共枚举< ?> propertyNames()) 它返回属性列表中所有键的枚举。
公共Set < String> stringPropertyNames() 它从属性列表中返回一组键, 其中键及其对应的值为字符串。
public void store(Writer w, String comment) 它将属性写入writer对象。
public void store(OutputStream os, String comment) 它将属性写入OutputStream对象。
public void storeToXML(OutputStream os, String comment) 它将属性写入writer对象以生成XML文档。
public void storeToXML(Writer w, String comment, String encoding) 它将属性写入Writer对象, 以使用指定的编码生成XML文档。
从属性文件获取信息的Properties类示例
要从属性文件中获取信息, 请首先创建属性文件。
db.properties
user=system password=oracle

现在, 让我们创建java类来从属性文件中读取数据。
Test.java
import java.util.*; import java.io.*; public class Test { public static void main(String[] args)throws Exception{ FileReader reader=new FileReader("db.properties"); Properties p=new Properties(); p.load(reader); System.out.println(p.getProperty("user")); System.out.println(p.getProperty("password")); } }

Output:system oracle

现在, 如果你更改属性文件的值, 则无需重新编译java类。这意味着没有维护问题。
获取所有系统属性的Properties类示例
通过System.getProperties()方法, 我们可以获得系统的所有属性。让我们创建一个从系统属性获取信息的类。
Test.java
import java.util.*; import java.io.*; public class Test { public static void main(String[] args)throws Exception{Properties p=System.getProperties(); Set set=p.entrySet(); Iterator itr=set.iterator(); while(itr.hasNext()){ Map.Entry entry=(Map.Entry)itr.next(); System.out.println(entry.getKey()+" = "+entry.getValue()); }} }

Output: java.runtime.name = Java(TM) SE Runtime Environment sun.boot.library.path = C:\Program Files\Java\jdk1.7.0_01\jre\bin java.vm.version = 21.1-b02 java.vm.vendor = Oracle Corporation java.vendor.url = http://java.oracle.com/ path.separator = ; java.vm.name = Java HotSpot(TM) Client VM file.encoding.pkg = sun.io user.country = US user.script = sun.java.launcher = SUN_STANDARD ...........

用于创建属性文件的Properties类的示例
现在, 让我们编写代码以创建属性文件。
Test.java
import java.util.*; import java.io.*; public class Test { public static void main(String[] args)throws Exception{Properties p=new Properties(); p.setProperty("name", "Sonoo Jaiswal"); p.setProperty("email", "sonoojaiswal@srcmini.com"); p.store(new FileWriter("info.properties"), "srcmini Properties Example"); } }

让我们看看生成的属性文件。
【Java中的Properties类】info.properties
#srcmini Properties Example #Thu Oct 03 22:35:53 IST 2013 email=sonoojaiswal@srcmini.com name=Sonoo Jaiswal

    推荐阅读