1.继承关系

java.lang.Object

  继承者 java.util.Dictionary<K,V>

      继承者 java.util.Hashtable<Object,Object>

          继承者 java.util.Properties

2.特性

Properties

1.继承与Hashtable,所以是线程安全键值对存储结构

2.可保存在流中或从流中加载

3.不同于Hashtable,Hashtable可保存object对象的键值对,Properties只能保存字符串类型的键值对

3.常用方法:

setProperty(String key, String value) 调用 Hashtable 的方法 put。

getProperty(String key, String defaultValue) 用指定的键在属性列表中搜索属性。

list(PrintWriter out) 将属性列表输出到指定的输出流

load(Reader reader) 按简单的面向行的格式从输入字符流中读取属性列表(键和元素对)。

store(Writer writer, String comments) 以适合使用 load(Reader) 方法的格式,将此 Properties 表中的属性列表(键和元素对)写入输出字符

4.实际使用

在src目录下,创建一个prop.properties文件,里面写上key=value的键值对数据,然后进行load加载,比如jdbc信息

代码1:设置和获取key-value

import java.io.FileWriter;import java.io.IOException;import java.io.PrintWriter;import java.util.Properties;import java.util.Set;public class Main_Properties {	public static void main(String[] args) {				Properties prop=new Properties();		prop.setProperty("name", "张三");		prop.setProperty("age" , "10");		System.out.println(prop);		/**		 * 输出:		 * {age=10, name=张三}		 * */		String name=prop.getProperty("name");		String age =prop.getProperty("age");		String id  =prop.getProperty("id");		System.out.println("name : "+name+",age :"+age+",id : "+id);		/**		 * 输出		 * name : 张三,age :10,id : null		 * */				PrintWriter pw=null;		try {			pw=new PrintWriter(new FileWriter("E:/0326.txt"),true);			Set set=prop.keySet();			for(Object obj:set) {				String key   = (String) obj;				String value = prop.getProperty(key);				pw.println(key+":"+value);				/**				 * 文件中输出内容				 * 1  age:10				 * 2  name:张三				 * 3     会多出一行空行,pw.println导致				 * */			}		} catch (IOException e) {			System.out.println("【异常】: IO错误");		} finally {			if(pw!=null) {				pw.close();			}		}		System.out.println("end");	}}

代码2:写入文件中

import java.io.FileNotFoundException;import java.io.PrintWriter;import java.util.Properties;public class Main_Properties_List {	public static void main(String[] args) {		Properties prop=new Properties();		prop.setProperty("name", "张三");		prop.setProperty("age" , "10");			PrintWriter pw=null;		try {			pw=new PrintWriter("E:/0326_2.txt");			prop.list(pw);			/**			 * 文件写入内容,默认间隔符是等号			 * 1    -- listing properties --			 * 2    age=10			 * 3    name=张三			 * 4    
<多出一行空行>
 * */ } catch (FileNotFoundException e) { System.out.println("【异常】:未找到文件"); } finally { if(pw!=null) { pw.close(); } } System.out.println("end"); }}

代码3:从文件中加载属性

import java.io.FileNotFoundException;import java.io.FileReader;import java.io.IOException;import java.util.Properties;public class Main_Properties_Load {	public static void main(String[] args) {		Properties prop=new Properties();		FileReader fr  =null;				try {			fr  =new FileReader("E:/1.txt");			/**			 * 文件内容			 * name=www			 * age=30			 * city@大连      
<这行使用的不是默认标准的分隔符>
 * daxue:工大   
<这行使用的不是默认标准的分隔符>
 * */ prop.load(fr); String name =prop.getProperty("name"); String age  =prop.getProperty("age"); String city =prop.getProperty("city"); String daxue=prop.getProperty("daxue"); System.out.println("name="+name+",age="+age+",city="+city+",daxue="+daxue); /**  * 
<输出内容>
 * name=www,age=30,city=null,daxue=工大  * */ } catch (FileNotFoundException e) { System.out.println("【异常】文件未找到"); } catch (IOException e) { System.out.println("【异常】IO"); } finally { if(fr!=null) { try { fr.close(); } catch (IOException e) { e.printStackTrace(); } } } }}

代码4:带注释存储到文件中

import java.io.FileWriter;import java.io.IOException;import java.util.Properties;public class Main_Properties_Store {	public static void main(String[] args) {				Properties prop=new Properties();		prop.setProperty("name", "张三");		prop.setProperty("age" , "10");				FileWriter fw=null;		try {			fw=new FileWriter("E:/0326_3.txt");			prop.store(fw, "这里是注释");			/**			 * 文件写入内容			 * 1	#\u8FD9\u91CC\u662F\u6CE8\u91CA		这行是"这里是注释"			 * 2	#Mon Mar 26 20:53:18 CST 2018		这行是自动生成的时间			 * 3	age=10			 * 4	name=张三			 * 5	
<多出一行空行>
 * */ } catch (IOException e) { System.out.println("【异常】IO"); } finally { if(fw!=null) { try { fw.close(); } catch (IOException e) { e.printStackTrace(); } } } System.out.println("end"); }}