属性对象包含作为字符串的键和值对。 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文档。 |
要从属性文件中获取信息, 请首先创建属性文件。
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
推荐阅读
- 在集合中排序
- Java TreeSet类
- Java TreeMap类
- Java队列接口
- Java Map接口
- Java列表接口
- Java LinkedList类
- 电脑上的OpenAL是什么(卸载OpenAL是否安全?提示和指南)
- Windows 10中的Chrome书签存储在哪里(详细指南)