Properties是java中一个比较重要的类,主要用来读取java自己特有的配置文件(Properties文件),各种语言都有自己支持的配置文件,例如:python的ini文件,配置文件的使用的可以将程序经常变化的变量值,用外部读取的方式赋值,如:配置Hadoop需要修改xml文件,提高程序可用性和拓展性
一,properties类
作用:properties类表示一组持久的属性。 Properties可以保存到流中或从流中加载。 属性列表中的每个键及其对应的值都是一个字符串
结构:
Properties属于Hashtable直接字类,属于key-value型的数据类型
注:properties的k-v只支持字符串类型,因为直接继承Hashtable,有put和putall方法,他们可以添加任意类型的k-v,违背了properties,不建议使用,可以使用setproperty添加
API:
重点介绍:
load方法 : 读取properties文件输入流中属性列表,加载进Properties结构中,这里可以从字节流和字符流读取
loadFromXML:读取XML文件的字节输入流,(只能是字节输入流)
setproperty:相当于Hashtable中put方法,用来增加数据
getproperty:相当于Hashtable中put方法的get方法,用来取值,必须指定key,可以设置默认值,假如文件有键吗值,可以把空值替代
stroe:将属性列表输出到外部文件
操作:
1,读取属性值
Map map=new HashMap<String,String>(); //InputStreamReader:转换流(可以指定编码集) //第一种读取properties文件方式,通过io流 BufferedReader input=new BufferedReader(new InputStreamReader(new FileInputStream("wql.properties"),"UTF-8")); Properties pro=new Properties(); //加载输入流列表 pro.load(input); map.put("wql",pro.getProperty("wql")); map.put("fq", pro.getProperty("fq")); ArrayList<String> list=new ArrayList<>(); list.addAll(map.values()); Iterator<String> it=list.iterator(); while(it.hasNext()) { System.out.print(it.next());
2,保存属性到外部文件
Reader read=new InputStreamReader(new FileInputStream("wql.properties"),"UTF-8"); Properties properties=new Properties(); properties.load(read); properties.store(new FileWriter("d:\\FQ"), "为什么总有那么多感觉!!!");
二,Resourcebunlie类
ResourceBunlie并没有和properties一样继承了复杂的类,它是object的子类,简单来说它就是国际化的Properties,它可以根据国家和语言的不同选择性的读取配置文件(Local类支持)
继承关系:
properties文件名的书写格式:
指定义文件名_语言_地区.properties
这样ResourceBunlie会判断语言地区选择相应的配置文件
API:
getBundle:这是一个静态方法,可带多个参数
public static final ResourceBundle getBundle(String baseName)//文件名
public static final ResourceBundle getBundle(String baseName,Locale locale)//加Locale类
public static ResourceBundle getBundle(String baseName, Locale locale,ClassLoader loader)//加类加载器
public static final ResourceBundle getBundle(String baseName,Control control)//控件返回资源包
public static ResourceBundle getBundle(String baseName, Locale targetLocale,ClassLoader loader, Control control)
getObject:通过键,返回object的值
getString:通过key,返回String类型的值
getStringArray:通过key,返回String数组
……
例:
Locale locale=new Locale("zh","CN"); ResourceBundle res=ResourceBundle.getBundle("FQ", locale); System.out.print(res.getString("wql"));
三,properties文件
properties是一个文本文件
properties的文件语法只有两种:
1,注释:#代表注释
2,属性配置:属性名=属性值
其他语法全部不能识别
注:
1,properties会忽略属性值和属性名之间的空格
2,属性值可以换行当属性名不行
3,可以有属性名没有属性值,也可以有属性名=没有属性值,但不能属性的配置没有键(属性名)
4,属性值可以换行,用/表示换行,当属性名不能换行
properties文件的读取
InputStream input=getClass().getClassLoader().getResourceAsStream("WQL.properties"); Properties pro = new Properties(); pro.load(input); System.out.print(pro.getProperty("wql"));
public static void main(String[] args) {
Locale locale1 = new Locale("zh", "CN");
ResourceBundle resb1 = ResourceBundle.getBundle("cache", locale1);
System.out.println(resb1.getString("aaa"));
ResourceBundle resb2 = ResourceBundle.getBundle("cache", Locale.getDefault());
System.out.println(resb1.getString("aaa"));
Locale locale3 = new Locale("en", "US");
ResourceBundle resb3 = ResourceBundle.getBundle("cache", locale3);
System.out.println(resb3.getString("aaa"));
}
Comments | NOTHING
Warning: Undefined variable $return_smiles in /www/wwwroot/wql_luoqin_ltd/wp-content/themes/Sakura/functions.php on line 1109