Java—Properties集合

一、Properties类

特点:
 1. Hashtable的子类,map集合中的方法都可以用。

 2. 该集合没有泛型。键值都是字符串

 3. 它是一个可以持久化的属性集。键值可以存储到集合中,也可以存储到持久化的设备(硬盘、U盘、光盘)上。键值的来源也可以是持久化的设备。

 4. 有和流技术相结合的方法。


二、代码演示

/*
 * Properties集合,它是唯一一个能与IO流交互的集合
 * 
 * 需求:向Properties集合中添加元素,并遍历
 * 
 * 方法:
 * public Object setProperty(String key, String value)调用 Hashtable 的方法 put。
 * public Set<String> stringPropertyNames()返回此属性列表中的键集,
 * public String getProperty(String key)用指定的键在此属性列表中搜索属性
 */
public class PropertiesDemo01 {
	public static void main(String[] args) {
		// 创建集合对象
		Properties prop = new Properties();
		// 添加元素
		prop.setProperty("周迅", "张学友");
		prop.setProperty("李小璐", "贾乃亮");
		prop.setProperty("杨幂", "刘恺威");

		// 遍历集合
		Set<String> keys = prop.stringPropertyNames();
		for(String key: keys){
			String value = prop.getProperty(key);
			System.out.println(key + "=" + value);
		}
		
		Set<Entry<Object, Object>> entrySet = prop.entrySet();
		for (Entry<Object, Object> entry : entrySet) {
			System.out.println(entry.getKey() + "=" + entry.getValue());
		}
	}
}

三、将集合中内容存储到文件

public class PropertiesDemo02 {
	/*
	 * 需求:使用Properties集合,完成把集合内容存储到IO流所对应文件中的操作
	 * 分析:
	 * 1,创建Properties集合
	 * 2,添加元素到集合
	 * 3,创建流
	 * 4,把集合中的数据存储到流所对应的文件中
	 *  stroe(Writer,comments)
	 * 	store(OutputStream,commonts)
	 * 	把集合中的数据,保存到指定的流所对应的文件中,参数commonts代表对描述信息
	 * 5,关闭流

	 */
	public static void main(String[] args) throws IOException {
		Properties prop = new Properties();
		
		prop.setProperty("周迅", "张学友");
		prop.setProperty("李小璐", "贾乃亮");
		prop.setProperty("杨幂", "刘恺威");

		Writer writer = new FileWriter("person.properties");
		
		prop.store(writer, "save data");
		
		writer.close();
	}
}

四、 读取文件中的数据,并保存到集合

public class PropertiesDemo03 {
	/*
	 * 需求:从属性集文件prop.properties 中取出数据,保存到集合中
	 * 分析:
	 * 1,创建集合
	 * 2,创建流对象
	 * 3,把流所对应文件中的数据 读取到集合中
	 * load(InputStream)  把指定流所对应的文件中的数据,读取出来,保存到Propertie集合中
	 * load(Reader)  
	 * 4,关闭流
	 * 5,显示集合中的数据
	 */
	public static void main(String[] args) throws IOException {
		Properties prop = new Properties();
		File file = new File("person.properties");
		System.out.println(file.getAbsolutePath());//获取所在的路径
		Reader reader = new FileReader(file);
		
		prop.load(reader);
		
		reader.close();
		
		System.out.println(prop);
	}
}

注:load() & store() 中的参数要使用同一个类型的流;InputStream对OutputStream,Reader对Writer;否则输出的数据可能是乱码

posted @ 2020-11-16 10:32  娜豆  阅读(97)  评论(0编辑  收藏  举报