java之Properties类

package com.qianfeng.test;

import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.util.Iterator;
import java.util.Properties;
import java.util.Set;

/*
 * Properties:这是一个类,可以理解成一个Map集合。
 * 存储的是属性,属性以键值对的形式存在。
 * 键值对内部的键值必须是String,所以不需要泛型。
 * 
 * 为什么要在这里讲Properties?
 * 因为他的操作与流的关系非常密切。
 * 
 * 优点:
 * 1.以键值对的形式存值
 * 2.内部封装了大量的方法,比如:load,stor,list等。方便操作。
 * 
 */
public class Demo10 {

	public static void main(String[] args) throws IOException {
		
		//1.基本的操作。
		//function1();
		//2.如何通过Properties获取系统的属性。
		//function2();
		//3.理解Properties的实际应用。
		function3();
		
		
	}
	//1.基本的操作。
	public static void function1(){
		//创建Properties对象
		Properties properties = new Properties();
		
		//存值
		properties.setProperty("01", "java");
		properties.setProperty("02", "python");
		properties.setProperty("01", "ok");
		
		
		//取值
		System.out.println(properties.getProperty("01"));
		
		//获取所有的Key
		Set<String> set = properties.stringPropertyNames();
		
		//遍历
		//第一种--增强for循环
		for (String key : set) {
			System.out.println("key:"+key+"  value:"+properties.getProperty(key));
		}
		
		//第二种--迭代器
		Iterator<String> iterator = set.iterator();
		while (iterator.hasNext()) {
			String key = (String) iterator.next();
			System.out.println("key:"+key+"= value:"+properties.getProperty(key));
		}
		
		//注意点:当key不存在的时候,返回的是默认值。
		String string = properties.getProperty("03", "iOS");
		System.out.println(string);
		
	}
	
	//2.如何通过Properties获取系统的属性。
	public static void function2(){
		Properties properties = System.getProperties();
		//遍历属性集合
		Set<String> set	= properties.stringPropertyNames();
		Iterator<String> iterator = set.iterator();
		while (iterator.hasNext()) {
			String key = (String) iterator.next();
			System.out.println("key:"+key+"= value:"+properties.getProperty(key));
		}
		
		//改变内部的值
		properties.setProperty("user.language", "ch");
		System.out.println(properties.getProperty("user.language"));
		
		//重新获取一遍
		//会先到内存中找属性集合的对象,如果有,直接使用;如果没有,会重新初始化一个新的对象,获取属性集合。
		Properties properties1 = System.getProperties();
		System.out.println(properties1.getProperty("user.language"));
		
		//将内容打印到控制台--list
		properties1.list(System.out);
		
	}
	
	//3.理解Properties的实际应用。
	public static void function3() throws IOException{
		//创建属性集合对象
		Properties properties = new Properties();
		
		//创建输入流
		FileReader fileReader = new FileReader("temp2.txt");
		
		//将temp2.txt的内容加载到属性集合对象中
		properties.load(fileReader);
		
		//打印到控制台
		//要想打印的是正确的形式,必须保证txt文件是键值对的形式存在。
		properties.list(System.out);
		
		//更改内容
		properties.setProperty("01", "bingbingbang");
		
		//将内容重新写回磁盘--借助输出流
		FileWriter fileWriter = new FileWriter("temp2.txt");
		properties.store(fileWriter, "bingbingchoule");
		
		fileReader.close();
		fileWriter.close();
	}
	
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值