Properties子类
Properties类本身是Hashtable的子类,但是由于Properties类都使用String数据类型进行操作,所以在使用Properties类时主要使用本类所定义的方法。Properties类常用方法如下:
No. | 方法 | 类型 | 描述 |
---|---|---|---|
1 | public Object setProperty(String key,String value) | 普通 | 设置属性 |
2 | public String getProperty(String key) | 普通 | 取得属性,如果key不存在则返回null |
3 | public String getProperty(String key,String defaultValue) | 普通 | 取得属性,如果key不存在则返回默认值 |
4 | public void store(OutputStream out,String comments) throws IOException | 普通 | 通过输出流保存属性内容,输出的同时可以设置注释信息 |
5 | public void load(InputStream inStream,String comments) throws IOException | 普通 | 通过输入流读取属性内容 |
例:属性的基本操作
package Project.Study.Properties;
import java.util.Properties;
public class Test1 {
public static void main(String[]args){
Properties properties = new Properties(); //实例化类对象
properties.setProperty("一","one"); //保存属性信息
properties.setProperty("二","two");
properties.setProperty("三","three");
System.out.println(properties.getProperty("一")); //根据key取得属性信息
System.out.println(properties.getProperty("二"));
System.out.println(properties.getProperty("三"));
System.out.println(properties.getProperty("四")); //没有key返回默认值
}
}
//结果:
//one
//two
//three
//null
利用Properties类还实现属性信息的输出流输出以及输入流读取操作。
例:将属性信息保存在文件里
package Project.Study.Properties;
import java.io.File;
import java.io.FileOutputStream;
import java.util.Properties;
public class Test2 {
public static void main(String[]args)throws Exception{
Properties properties = new Properties(); //实例化对象
properties.setProperty("one","一"); //保存属性信息
properties.setProperty("two","二");
properties.setProperty("three","三");
//一般而言后缀可以随意设置,但是标准来讲,既然是文件,后缀就必须是*.properties,这样做是为了与国际化对应
//在进行属性信息保存时如果属性内容为中文则会自动进行转码操作
properties.store(new FileOutputStream(new File("d:"+File.separator+
"Test"+File.separator+"test.properties")),"Area Info");
}
}
结果:
例:通过文件流读取属性内容
package Project.Study.Properties;
import java.io.File;
import java.io.FileInputStream;
import java.util.Properties;
public class Test3 {
public static void main(String[]args)throws Exception{
Properties properties = new Properties(); //实例化对象
properties.load(new FileInputStream(new File("d:"+File.separator+
"Test"+File.separator+"test.properties")));
System.out.println(properties.getProperty("一"));
System.out.println(properties.getProperty("two")); //根据key取得属性信息
System.out.println(properties.getProperty("three"));
}
}
//结果:
//null
//二
//三
Properties类与ResourceBundle类的区别:
ResourceBundle类在进行资源文件的读取时只能读取后缀为"*.properties"的文件,并且往往要通过Locale类来设置当前国家及语言环境,但是ResourceBundle类与Locale类结合读取不同语言资源文件的功能Properties类并没有;
Properties类可以不区分文件后缀,只要符合它保存数据的结构标准的输入流,数据都可以进行读取。
综上:如果读取国际化资源文件使用ResourceBundle类,如果读取一些配置信息则可以使用Properties类。